使用pg_dump只从数据库中的一个表中获取insert语句

时间:2010-05-18 14:08:10

标签: postgresql

我正在寻找一种方法,使用PostgreSQL中的INSERT从数据库中的一个特定表中获取所有行pg_dump语句。

例如,我有表A和表A中我需要的所有行INSERT语句,它也应该将这些语句转储到文件中。

这可能吗?

4 个答案:

答案 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 文件:

  1. cd到您希望.sql文件所在的位置
  2. pg_dump --column-inserts --data-only --table=<table> <database> > my_dump.sql
  3. 请注意> my_dump.sql命令。这会将所有内容放入名为 my_dump

    的sql文件中

答案 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

考虑到结构相同,在数据库中插入相同的数据

相关问题