#!/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 "$zip_file"
echo "解压文件: $zip_file"
# 提取文件名(去除 .zip 扩展名)
base_name=$(basename "$zip_file" .zip)
echo "解压文件: $base_name"
# 设置 PostgreSQL 的环境变量
export PGUSER=postgres
export PGPASSWORD=d
export PGHOST=
export PGPORT=5432
export PGDATABASE=
# 执行 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 '%环境%';";