postgresql没有自带的批量导入导出成CSV的指令,但是有一个调用执行文件的指令(\i),这个指令可以执行编写的脚本。例如
一个a.txt文件,里面内容是
#将xxx表数据导出xxx文件
\copy xxx to xxx
需要在客户端的指令界面执行以下指令
\i 路径\a.txt
就可以进行批量导出操作。
postgresql copy命令介绍
注意COPY只能用于表,不能用于视图
copy命令可以操作的文件类型有:txt、sql、csv、压缩文件、二进制格式
1、copy命令导入数据示例:tb2是表名,delimiter ‘,’ 表示按逗号分隔字段数据
postgresql=# copy tb2 from '/mnt/postgresql/weibo.1000'delimiter ',';
COPY1000
postgresql=# select count(*)from tb2;
2、copy命令导入导出数据为sql格式
postgresql=# COPY tb2 TO '/mnt/postgresql/weibo.sql';
COPY1000
postgresql=# COPY tb2 from '/mnt/postgresql/weibo.sql';
COPY2000
导出表 employee 到 sql 文件:
psql> COPY employee TO '/home/smallfish/employee.sql';
从文件导入数据:
psql> COPY employeenew FROM '/home/smallfish/employee.sql';
导入文件数据,指定间隔符为 | :
psql> COPY employeenew FROM '/home/smallfish/employee.sql' DELIMITER |;
数据库导入导出
导入整个数据库
psql -U postgres(用户名) 数据库名(缺省时同用户名) < /data/dum.sql
导出整个数据库
pg_dump -h localhost -U postgres(用户名) 数据库名(缺省时同用户名) >/data/dum.sql
导出某个表
pg_dump -h localhost -U postgres(用户名) 数据库名(缺省时同用户名) -t table(表名) >/data/dum.sql
压缩方法
一般用dump导出数据会比较大,推荐使用xz压缩
压缩方法 xz dum.sql 会生成 dum.sql.xz 的文件
xz压缩数据倒数数据库方法
xzcat /data/dum.sql.xz | psql -h localhost -U postgres(用户名) 数据库名(缺省时同用户名)
导入数据过程:
/*1.删除索引*/
drop index UQ_IDX_UNI_ENTERPRISE_001;
/*2.清空表数据,注意该步骤,只有测试在重复部署环境时才执行,生产环境只初始化一次,不需要执行 */
truncate tb_uni_enterprise;
/*3.导入数据*/
COPY tb_uni_enterprise(appid, eid, ename, status, creator, createtime,modifier, modifytime, memo) FROM '/tmp/init/enterprise.sql' DELIMITER '|';
/*4.创建索引*/
create unique index UQ_IDX_UNI_ENTERPRISE_001 on TB_UNI_ENTERPRISE (
appid,
eid
);
参考链接 :
https://blog.csdn.net/sinat_33775006/article/details/101181769
postgresql 数据导入导出https://blog.csdn.net/sanjiaoqq/article/details/84441053
更多介绍 :postgresql copy命令介绍 https://www.cnblogs.com/xiaodf/p/5027196.html
POSTGRESQL 数据库导入导出 :https://blog.csdn.net/qq_23077579/article/details/81780669
PostgreSQL COPY 导入/导出数据 : http://ju.outofmemory.cn/entry/35794
https://yq.aliyun.com/articles/74420
https://www.cnblogs.com/junge8618/p/5513966.html