我正在寻找一种方法,使用PostgreSQL中的INSERT
从数据库中的一个特定表中获取所有行pg_dump
语句。
例如,我有表A和表A中我需要的所有行INSERT
语句,它也应该将这些语句转储到文件中。
这可能吗?
答案 0 :(得分:189)
如果版本< 8.4.0
pg_dump -D -t <table> <database>
如果您只想要INSERT,而不是CREATE TABLE等,那么在-a
之前添加-t
就可以在第一时间设置表。
版本&gt; = 8.4.0
pg_dump --column-inserts --data-only --table=<table> <database>
答案 1 :(得分:26)
如果您想将插入内容转换为 .sql 文件:
cd
到您希望.sql
文件所在的位置pg_dump --column-inserts --data-only --table=<table> <database> > my_dump.sql
请注意> my_dump.sql
命令。这会将所有内容放入名为 my_dump
答案 2 :(得分:1)
放入脚本,我喜欢这样的东西:
#!/bin/bash
set -o xtrace # remove me after debug
TABLE=charge_unit
DB_NAME=prod_sit_entities_db
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
答案 3 :(得分:0)
以防万一您正在使用远程访问并想转储所有数据库数据,可以使用:
time
它将创建包含所有数据库数据的转储并使用
pg_dump -a -h your_host -U your_user -W -Fc your_database > DATA.dump
考虑到结构相同,在数据库中插入相同的数据