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

浙公网安备 33010602011771号