pgsql 使用 copy 指令进行文件CSV 导入数据库,方便实现远程定时导入

csv文件:
导入文件
表效果:
pgsql 使用 copy 指令进行文件CSV 导入数据库,方便实现远程定时导入_第1张图片
linux命令 postgre客户端执行语句
psql “host=主机名 hostaddr=主机IP地址 port=端口 dbname=数据库 user=用户名 password=密码” -c "\copy test_1 from ‘/data/test.csv’ delimiter ‘|’ csv "
例:
psql “host=192.168.0.1 hostaddr=192.168.0.1 port=5432 dbname=test user=root password=root” -f /data/pgsql_copy.sql

linux命令 postgre客户端执行脚本
psql “host=主机名 hostaddr=主机IP地址 port=端口 dbname=数据库 user=用户名 password=密码” -f 执行脚本文件名地址
例:
psql “host=192.168.0.1 hostaddr=192.168.0.1 port=5432 dbname=test user=root password=root” -f /data/pgsql_copy.sql

注释:
"host=主机名 hostaddr=主机IP地址 port=端口 dbname=数据库 user=用户名 password=密码" :使用该方式主要实现免密登录
-f <文件名> : 执行一个文件中的查询,然后退出
执行脚本:主要放置copy脚本
如:pgsql_copy.sql:
\copy test_1 from ‘/data/test.csv’ delimiter ‘|’ csv
注意:test_1 表需要存在

下面是关于copy命令的一些简单说明:
copy 命令始终是到数据库服务端找文件,以超级用户执行导入导出权限要求很高,适合数据库管理员操作;
\copy 命令可在客户端执行导入客户端的数据文件,权限要求没那么高,适合开发人员,测试人员使用。
导入:
COPY table_name [ ( column_name [, …] ) ]
FROM { ‘filename’ | PROGRAM ‘command’ | STDIN }
[ [ WITH ] ( option [, …] ) ]
导出:
COPY { table_name [ ( column_name [, …] ) ] | ( query ) }
TO { ‘filename’ | PROGRAM ‘command’ | STDOUT }
[ [ WITH ] ( option [, …] ) ]
where option can be one of:
FORMAT format_name
OIDS [ boolean ]
FREEZE [ boolean ]
DELIMITER ‘delimiter_character’
NULL ‘null_string’
HEADER [ boolean ]
QUOTE ‘quote_character’
ESCAPE ‘escape_character’
FORCE_QUOTE { ( column_name [, …] ) | * }
FORCE_NOT_NULL ( column_name [, …] )
ENCODING ‘encoding_name’

FORMAT:指复制到文件的文件类型,如:CSV,TEXT。
OIDS :指复制到文件时带上oid,但是当某个表没有oid时就会出错。
FREEZE :冻结数据,然后执行VACUUM FREEZE。
DELIMITER:指在导出文件时的分隔符指定需要用单引号。在TEXT时默认为tab,CSV文件默认是逗号。不支持binary文件格式。
HEADER:指在复制到文件时带上表字段名称。
NULL:指定null值,默认为\N。
ENCODING:指定文件的编码,如果没有指定就默认使用客户端的字符集。
STDIN:指的是客户端程序的输入流。
STDOUT:指向是客户端的输出流。

你可能感兴趣的:(pgsql,数据库)