我正在寻找一种方法,可以在PostgreSQL中使用pg_dump
从数据库中的一个特定表中以INSERT
语句的形式获取所有行。
例如,我的表A和表A中的所有行都需要作为INSERT
语句,它还应该将这些语句转储到一个文件中。
这个是可能的吗?
发布于 2010-05-18 22:14:02
如果版本低于8.4.0
pg_dump -D -t <table> <database>
如果您只想要插入,则在-t
之前添加-a
,而不希望首先使用CREATE TABLE等命令来设置表。
版本>= 8.4.0
pg_dump --column-inserts --data-only --table=<table> <database>
发布于 2019-03-26 19:32:29
以防您使用远程访问并希望转储所有数据库数据,您可以使用:
pg_dump -a -h your_host -U your_user -W -Fc your_database > DATA.dump
它将创建一个包含所有数据库数据转储,并使用
pg_restore -a -h your_host -U your_user -W -Fc your_database < DATA.dump
在数据库中插入相同的数据,考虑到您有相同的结构
发布于 2018-11-28 01:57:04
放到脚本中我喜欢这样的东西:
#!/bin/bash
set -o xtrace # remove me after debug
TABLE=some_table_name
DB_NAME=prod_database
BASE_DIR=/var/backups/someDir
LOCATION="${BASE_DIR}/myApp_$(date +%Y%m%d_%H%M%S)"
FNAME="${LOCATION}_${DB_NAME}_${TABLE}.sql"
# Create backups directory if not exists
if [[ ! -e $BASE_DIR ]];then
mkdir $BASE_DIR
chown -R postgres:postgres $BASE_DIR
fi
sudo -H -u postgres pg_dump --column-inserts --data-only --table=$TABLE $DB_NAME > $FNAME
sudo gzip $FNAME
https://stackoverflow.com/questions/2857989
复制相似问题