COPY在PostgreSQL表和标准文件系统文件之间交换数据。COPY……TO把一个表的所有内容都拷贝到一个文件,而COPY……FROM从一个文件里拷贝数据到一个表里(把数据附加到表中已经存在的内容里)。
COPY 表名 TO '文件名.csv' CSV HEADER;
1、将excel文件转换为csv格式,方法如下:
文件-->另存为-->其他格式,保存类型下拉框中选择CSV格式。
2、psql连接PostgreSQL数据库:
psql -h 127.0.0.1 -p 5432 -d postgres -U postgres
3、设置psql客户端编码格式(中文问题):
查看psql客户端当前编码格式,命令:show client_encoding;
如果编码格式不是GBK,设为GBK,命令:set client_encoding='GBK';
4、执行copy命令:
copy t_test(name) from 'D:\\t_test.csv' with csv;
导出:
copy new_table to '/tmp/vehicles_2.csv' csv header;
返回结果:
COPY 4260
注:CSV,打开逗号分隔变量(CSV)模式。
HEADER,声明文件包含一个头标识行,包含文件中每个字段的名字。输出时,第一行包含表的字段名,输入时,第一行被忽略。
带文件名的 COPY指示 PostgreSQL服务器直接从文件中读写数据。如果声明了文件名,那么该文件必须为服务器可见,而且文件名必须从服务器的角度声明。如果声明的是STDIN或STDOUT,数据通过连接在客户前端和服务器之间流动。