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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值