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


    #!/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 '%环境%';";
     

  • 相关阅读:
    基于react-markdown组件自定义一个Markdown显示器
    Linux系统之部署react-tetris俄罗斯方块小游戏
    【MySQL系列】MySQL数据库基础
    面试中的最常被问到的两种锁
    第一节——vue安装+前端工程化
    Java 代码和使用steam流(List对象使用流操作示例,Java正则匹配,获取当前操作系统)
    利用浏览器将Markdown导出为HTML、PDF
    代码随想录Day56 | 1143. 最长公共子序列 | 1035. 不相交的线 | 53. 最大子数组和
    基于SpringBoot+Vue的教师人事档案管理系统
    Spring Boot的魔法:构建高效Java应用的秘诀
  • 原文地址:https://blog.csdn.net/jsboy123/article/details/134337022