PostgreSql 批量同步数据库指定表 使用shell脚本方式

牟嘉
2023-12-01

先设置 免密码

在当前用户目录下创建.pgpass文件
localhost:5432:*:postgres:password
ip地址:端口:数据库名:用户名:密码

例如: 172.16.5.85:5432:test:postgres:xxx

赋权 : chmod -R 0700 .pgpass

导出脚本

./export_table.sh /root/export_table.txt /root/temporary

第一个参数 存放表名的文件
第二个参数 保存路径

#!/bin/sh

# 存放表名的文件
table_name_file=$1

# 保存路径
save_path=$2

for line in `cat  $table_name_file`
do
    pg_dump -h 172.16.5.85 -U postgres -p 5432 -d eimos_business -t $line --inserts >$save_path/$line.sql
    echo $line
done

导入脚本
先删除 需要导入的表(具体原因看,导出sql脚本的内容)

./import_table.sh /root/temporary /root/logs

第一个参数 数据文件存放路径
第二个参数 日志文件存放位置

#!/bin/sh  

# 遍历的文件夹
import_path=$1
# 保存路径
save_path=$2

for file in ${import_path}/*
do  
    file_name=`basename $file`
    psql -h 172.16.5.85 -p 5432 -U postgres -f $import_path/$file_name test >> $save_path/$file_name.log
    echo $file_name  
done

export_table.txt中存放内容

public.stu1
public.stu2
public.stu3
ods.stu4
ods.stu5
analyse.stu6
analyse.stu7
 类似资料: