PostgreSQL导出表数据为INSERT语句的一行命令

基本导出命令

# 导出整个表
pg_dump -h localhost -U username -d database_name -t table_name --data-only --column-inserts > table_export.sql

# 导出指定条件的数据
psql -h localhost -U username -d database_name -c "COPY (SELECT * FROM table_name WHERE condition) TO STDOUT" | sed 's/^/INSERT INTO table_name VALUES (/;s/$/);/' > table_export.sql

 

常用示例

 
# 导出users表所有数据
pg_dump -h localhost -U postgres -d mydb -t users --data-only --column-inserts > users_export.sql

# 导出最近7天的数据
pg_dump -h localhost -U postgres -d mydb -t orders --data-only --column-inserts --where="created_at >= NOW() - INTERVAL '7 days'" > recent_orders.sql

# 导出指定字段的数据
psql -h localhost -U postgres -d mydb -c "COPY (SELECT id, name, email FROM users WHERE active = true) TO STDOUT" | sed 's/^/INSERT INTO users (id, name, email) VALUES (/;s/$/);/' > active_users.sql 

参数说明

  • -h: 主机地址
  • -U: 用户名
  • -d: 数据库名
  • -t: 表名
  • --data-only: 只导出数据,不导出结构
  • --column-inserts: 生成带列名的INSERT语句
  • --where: 添加WHERE条件

最简命令

# 最简单的方式
pg_dump -h localhost -U postgres -d yourdb -t yourtable --data-only --column-inserts > export.sql

无密码导出命令

 
# 基本导出(无密码)
pg_dump -h localhost -U postgres -d database_name -t table_name --data-only --column-inserts > table_export.sql

# 或者使用trust认证
PGPASSWORD="" pg_dump -h localhost -U postgres -d database_name -t table_name --data-only --column-inserts > table_export.sql

 
posted @ 2025-07-22 10:42  MR__Wang  阅读(105)  评论(0)    收藏  举报