表结构:
csv文件(这里以逗号分隔,第一行是列名,不需要导入):
1. 通过psql命令,登录postgresql:
登录命令格式:
psql -h ip地址 -p 端口号 -U 用户名 -d 数据库名
示例:
psql -h 192.168.58.132 -p 35432 -U postgres -d npas
指定或切换schema命令格式:
set search_path to schema名称;
示例:
set search_path to npas;
2. 导入csv文件:
文件所在路径:
/root/document/csv/table_aaa.csv
命令行导入csv文件
格式:(header表示带表头的,如果不带表头则不用加header)
\copy 数据表名 from '文件路径+文件名' with 文件后缀 header delimiter '分隔符' encoding '编码格式';
示例:
\copy tbl_a from '/root/document/csv/table_aaa.csv' with csv header delimiter ',' encoding 'UTF8';
执行后:
======================================================================================
参考文章:
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:指向是客户端的输出流。