• 根据最新上传的压缩包,解压写入数据库


    #!/bin/bash
    # 切换目录
    cd /data/picturefile/dams/projectfile
    # 解压最新zip
    zip_file=$(ls -t | grep '.zip' | head -n 1)
    unzip -l "$zip_file"
    unzip -o "$zip_file"
    echo "解压文件: $zip_file"
    # 提取文件名(去除 .zip 扩展名)
    base_name=$(basename "$zip_file" .zip)
    echo "解压文件: $base_name"

    # 设置 PostgreSQL 的环境变量
    export PGUSER=postgres
    export PGPASSWORD=postgres
    export PGHOST=localhost
    export PGPORT=5432
    export PGDATABASE=postgres

    # 执行 SQL 查询并将结果赋值给变量
    file_object_id=$(psql -U $PGUSER -h $PGHOST -p $PGPORT -d $PGDATABASE -t -c "SELECT id FROM project WHERE name = '$base_name'")

    # 输出查询结果
    echo "查询结果:$file_object_id"
    # 去除空格
    file_object_id=$(echo "$file_object_id" | tr -d '[:space:]')
    # 一个文件夹对应一个file_object_id,先删除表里面原来记录 
    psql -U $PGUSER -h $PGHOST -p $PGPORT -d $PGDATABASE -c "DELETE FROM \"public\".\"tblareafile\" WHERE \"file_object_id\" = '$file_object_id';"

    cd "$base_name"
    # 获取当前目录并输出
    current_directory=$(pwd)
    # Remove the prefix /data from the current_directory
    current_directory_without_data="${current_directory#/data}"
    echo "当前目录: $current_directory"
    # 遍历当前目录下文件,插入到数据库表
    for file in *; do
        if [ -f "$file" ]; then  # 确保是文件而不是目录
            # 获取文件名(不包含路径)
            file_name=$(basename "$file")
        echo $file_name
            # 插入数据到数据库表
        psql -U $PGUSER -h $PGHOST -p $PGPORT -d $PGDATABASE -c \
            "INSERT INTO \"public\".\"tblareafile\" (\"file_id\", \"file_name\", \"file_path\", \"file_type\", \"file_object_id\", \"create_time\") \
            VALUES (replace((uuid_generate_v4())::text, '-'::text, ''::text), '$file_name', '$current_directory_without_data$file_name', 1, '$file_object_id', now());"
        fi
    done
    # 更新file_type
    psql -U $PGUSER -h $PGHOST -p $PGPORT -d $PGDATABASE -c \
      "UPDATE \"public\".\"tblareafile\" \
       SET \"file_type\" = CASE \
           WHEN \"file_name\" ILIKE '%图纸%' THEN 1 \
           WHEN \"file_name\" ILIKE '%报告%' THEN 2 \
           WHEN \"file_name\" ILIKE '%环境%' THEN 3 \
           ELSE NULL \
       END \
       WHERE \"file_name\" ILIKE '%图纸%' OR \"file_name\" ILIKE '%报告%' OR \"file_name\" ILIKE '%环境%';";
     

    用lua执行出现问题。改了下脚本

    #!/bin/bash
    export LANG="en_US.UTF-8"
    export LC_ALL="en_US.UTF-8"
    # 切换目录
    cd /data/picturefile/dams/projectfile
    # 解压最新zip
    zip_file=$(ls -t | grep '.zip' | head -n 1)
    unzip -l "$zip_file"
    unzip -O CP936 -o "$zip_file"
    echo "解压文件: $zip_file"
    # 提取文件名(去除 .zip 扩展名)
    base_name=$(basename "$zip_file" .zip)
    echo "解压文件: $base_name"

    # 设置 PostgreSQL 的环境变量
    export PGUSER=postgres
    export PGPASSWORD=dahua#2501
    export PGHOST=139.196.56.144
    export PGPORT=5432
    export PGDATABASE=DumpingZoneSystemV5

    # 执行 SQL 查询并将结果赋值给变量
    file_object_id=$(/usr/bin/psql -U $PGUSER -h $PGHOST -p $PGPORT -d $PGDATABASE -t -c "SELECT id FROM project WHERE name = '$base_name'")

    # 输出查询结果
    echo "查询结果:$file_object_id"
    # 去除空格
    file_object_id=$(echo "$file_object_id" | tr -d '[:space:]')
    # 一个文件夹对应一个file_object_id,先删除表里面原来记录 
    /usr/bin/psql -U $PGUSER -h $PGHOST -p $PGPORT -d $PGDATABASE -c "DELETE FROM \"public\".\"tblareafile\" WHERE \"file_object_id\" = '$file_object_id';"

    cd "$base_name"
    # 获取当前目录并输出
    current_directory=$(pwd)
    # Remove the prefix /data from the current_directory
    current_directory_without_data="${current_directory#/data}"
    echo "当前目录: $current_directory"
    # 遍历当前目录下文件,插入到数据库表
    for file in *; do
        if [ -f "$file" ]; then  # 确保是文件而不是目录
            # 获取文件名(不包含路径)
            file_name=$(basename "$file")
        echo $file_name
            # 插入数据到数据库表
        /usr/bin/psql -U $PGUSER -h $PGHOST -p $PGPORT -d $PGDATABASE -c \
            "INSERT INTO \"public\".\"tblareafile\" (\"file_id\", \"file_name\", \"file_path\", \"file_type\", \"file_object_id\", \"create_time\") \
            VALUES (replace((uuid_generate_v4())::text, '-'::text, ''::text), '$file_name', '$current_directory_without_data$file_name', 1, '$file_object_id', now());"
        fi
    done
    # 更新file_type
    /usr/bin/psql -U $PGUSER -h $PGHOST -p $PGPORT -d $PGDATABASE -c \
      "UPDATE \"public\".\"tblareafile\" \
       SET \"file_type\" = CASE \
           WHEN \"file_name\" ILIKE '%图纸%' THEN 1 \
           WHEN \"file_name\" ILIKE '%报告%' THEN 2 \
           WHEN \"file_name\" ILIKE '%环境%' THEN 3 \
           ELSE NULL \
       END \
       WHERE \"file_name\" ILIKE '%图纸%' OR \"file_name\" ILIKE '%报告%' OR \"file_name\" ILIKE '%环境%';";
     

  • 相关阅读:
    微服务概述
    心动(GDI+)
    ALlegro怎么恢复到初始操作界面?
    道通转债,微芯转债,博22转债上市价格预测
    亚马逊云科技海外服务器初体验
    JSP的简介和生命周期
    Lavarel异步队列的使用
    【Electron-vue】在Kylin系统中打包可执行文件过程及报错问题
    网络安全,下一个十年饭碗稳了!
    Python测试框架 Pytest —— mock使用(pytest-mock)
  • 原文地址:https://blog.csdn.net/jsboy123/article/details/134337022