首页 > 其他分享 >【PG】不同PG中迁移表

【PG】不同PG中迁移表

时间:2024-03-14 21:36:38浏览次数:32  
标签:SRC NAME DEST 不同 DB PG TABLE table 迁移


#!/bin/bash

# Source database credentials
SRC_DB_HOST="localhost"
SRC_DB_PORT="5442"
SRC_DB_NAME="postgres"
SRC_DB_USER="myuser"
SRC_DB_PASS='mypwd'
# Destination database credentials
DEST_DB_HOST="localhost"
DEST_DB_PORT="5443"
DEST_DB_NAME="postgres"
DEST_DB_USER="myuser"
DEST_DB_PASS='mypwd'
# Table name to copy
TABLE_NAME="my_table"
# Temporary file to store the SQL dump
DUMP_FILE="/tmp/${TABLE_NAME}.sql"
# Check the table exists in the Source DB.
export PGPASSWORD=$SRC_DB_PASS
RESULT=$(psql -h ${SRC_DB_HOST} -p ${SRC_DB_PORT} -U ${SRC_DB_USER} -d ${SRC_DB_NAME} -t -c "SELECT count(1) FROM information_schema.tables WHERE table_name = '${TABLE_NAME}' ")
if [[ "$RESULT" -eq "0" ]]; then
  echo "Error: The table ${TABLE_NAME} doesn't exist in the Source DB."
  exit 1
fi
# Check the table dosn't exist in the Destination DB.
export PGPASSWORD=$DEST_DB_PASS
RESULT=$(psql -h ${DEST_DB_HOST} -p ${DEST_DB_PORT} -U ${DEST_DB_USER} -d ${DEST_DB_NAME} -t -c "SELECT count(1) FROM information_schema.tables WHERE table_name = '${TABLE_NAME}' ")
if [[ "$RESULT" -ne "0" ]]; then
  echo "Error: The table ${TABLE_NAME} exists in the Destination DB."
  exit 1
fi
# Dump the table to a SQL file
export PGPASSWORD=$SRC_DB_PASS
pg_dump -h ${SRC_DB_HOST} -p ${SRC_DB_PORT} -U ${SRC_DB_USER} -t ${TABLE_NAME} -F p ${SRC_DB_NAME} > ${DUMP_FILE}
# Restore the SQL dump to the destination database
export PGPASSWORD=$DEST_DB_PASS
psql -h ${DEST_DB_HOST} -p ${DEST_DB_PORT} -U ${DEST_DB_USER} -d ${DEST_DB_NAME} -f ${DUMP_FILE} -v ON_ERROR_STOP=1
# Check if the table was successfully copied
export PGPASSWORD=$DEST_DB_PASS
RESULT=$(psql -h ${DEST_DB_HOST} -p ${DEST_DB_PORT} -U ${DEST_DB_USER} -d ${DEST_DB_NAME} -t -c "SELECT COUNT(*) FROM ${TABLE_NAME}")
if [[ "$RESULT" -eq "0" ]]; then
  echo "Error: The table ${TABLE_NAME} could not be copied."
  exit 1
fi
# Get the number of records in the source table
export PGPASSWORD=$SRC_DB_PASS
source_count=$(psql -h ${SRC_DB_HOST} -p ${SRC_DB_PORT} -U ${SRC_DB_USER} -d ${SRC_DB_NAME} -c "SELECT COUNT(*) FROM ${TABLE_NAME}" -t)
# Get the number of records in the destination table
export PGPASSWORD=$DEST_DB_PASS
dest_count=$(psql -h ${DEST_DB_HOST} -p ${DEST_DB_PORT} -U ${DEST_DB_USER} -d ${DEST_DB_NAME} -c "SELECT COUNT(*) FROM ${TABLE_NAME}" -t)
# Check that the number of records matches
if [ "$source_count" -ne "$dest_count" ]; then
    echo "Error: The number of records in the source and destination tables ${TABLE_NAME} do not match."
    exit 1
else
    echo "Success: The table ${TABLE_NAME} was copied successfully."
fi
echo "The table was ${TABLE_NAME} successfully copied to the destination database."

标签:SRC,NAME,DEST,不同,DB,PG,TABLE,table,迁移
From: https://www.cnblogs.com/Jeona/p/18074018

相关文章

  • 【PG】列出表以及大小
    ThispostdemonstratesanexampleofaBashscriptthatconnectstoaDBandprintsalistoftables,theirrecordsnumber,andsize.Theresultsetissortedindescendingorderbysizeandthenbynumberofrecords.Inaddition,theoutputofthescript......
  • 【PG】查询数据大小
    #!/bin/bash##################################################################calculate_a_pure_size_of_the_postgres_db.sh##ThisscriptcalculatesapuresizeofthePostgresDB##DB_Pure_Size=DB_Size-DB_Tables_Bloat-DB_Indexes_Bloat##Aut......
  • 【PG】查看PG对象大小增长情况
    #!/bin/bash####################################################check_postgresql_db_table_rowsnum_and_sizing.sh##Thisscriptsiteratesartidatabasesand#populatessometargetdbtablewith#infoabouttablesrownumandsizing##Date:10-Aug-......
  • PG14:auth_delay 插件源码分析
    auth_delay让服务器在报告身份验证失败前短暂暂停,以增加对数据库密码进行暴力破解的难度。需要注意的是,这对阻止拒绝服务攻击毫无帮助,甚至可能加剧攻击,因为在报告身份验证失败前等待的进程仍会占用连接。要使用这个模块必须要在postgresql.conf中配置参数shared_preload_libr......
  • C++、Java 和 Go 是三种流行的编程语言,它们各有不同的特点和应用场景
    C++:面向对象和泛型编程:C++是一种多范式编程语言,支持面向对象编程(OOP)和泛型编程(GenericProgramming)。性能:C++是一种系统级编程语言,注重性能和内存管理。它提供了直接的内存访问和指针操作,使得程序员可以更精细地控制内存和计算资源。灵活性:C++允许程序员直接操作硬件,并提......
  • 服务平滑迁移:eureka迁移到nacos。无法注册双中心的问题解决
    迁移的文档:https://www.alibabacloud.com/help/zh/edas/developer-reference/smoothly-migrate-a-spring-cloud-cluster-that-contains-multiple-applications-to-edas其中遇到的问题未配置排除配置项时(exclude={RibbonEurekaAutoConfiguration.class}),ribbonServerList不是......
  • 【Idea】idea启动同一程序不同端口 spring boot
    【Idea】idea启动同一程序不同端口springboot前言在idea中配置两个不同端口,同时运行两个相同的主程序。更多端口配置同理idea版本:2022.2.31.在service中复制一个进程,指定不同端口右键打开点击copyConfiguration2.点击Modifyoption2.选择VMoption(用于指定......
  • PG14:adminpack 插件源码分析
    adminpack提供了大量支持功能,pgAdmin和其他管理工具可以使用这些功能提供额外功能,例如远程管理服务器日志文件。默认情况下,只有数据库超级用户才能使用所有这些功能,但其他用户也可以使用GRANT命令使用这些功能。我们先来看一下他支持的函数,可以通过\dx+adminpack来进行查......
  • (笔记)FPGA多周期路径及set_multicycle_path详解
    默认情况下综合工具会把每条路径定义为单周期路径,即源触发器在时钟的任一边沿启动(launch)的数据都应该由目的触发器在时钟的下一上升沿捕获(capture)。有的设计可能存在时序例外(timingexceptions),如多周期路径、虚假路径等。数据从起点到终点的传输时间需要一个时钟周期以上才能稳定......
  • FPGA交通信号灯设计报告(VHDL语言)
    FPGA的大作业我选择了交通灯控制系统的设计,此课程只有2个学分,因此只需要在相应软件仿真出结果即可。以下是我的设计报告,当时写的匆忙,没有对代码进行优化改进,但仿真结果是正确的,可以给大家提供一下思路。一、任务分析1.输入和输出2.多进程3.特殊情况4.注意二、quartus......