PG的数据导入和导出的命令是通过copy来实现的。
导出数据命令:
\copy tablename to 'c:\123.txt' delimiter '|'
导入数据的命令
\copy tablename from 'c:\123txt' delimiter '|'
在同步数据时又坑爹的碰到字符集问题,通过psql的控制台我们查看数据库的字符集。
postgres=> \l
名称 | 拥有者 | 字元编码 |
Ctype |
-----------+----------+----------+--
-----------------------------------+
mydb | postgres | UTF8 | C
ese_People's Republic of China.936 |
postgres | postgres | UTF8 | C
ese_People's Republic of China.936 |
template0 | postgres | UTF8 | C
ese_People's Republic of China.936 |
| | |
|
template1 | postgres | UTF8 | C
ese_People's Republic of China.936 |
| | |
|
我们看到数据库的字符集是UTF8,
然后我们看下我们的客户端字符集
postgres=> show client_encoding ;
client_encoding
-----------------
GBK
通过命令可以看到我们的客户端字符集是GBK,客户端和服务器的字符集不一致,导致我的数据导入报错,问题的j解决方法很简单。
修改字符集,然后导入数据。
修改字符集命令:
postgres=> \encoding UTF8
查看字符集
postgres=> show client_encoding;
client_encoding
-----------------
UTF8
(1 行记录)
我们可以看到我们的客户端字符集已经修改完成,然后再通过copy命令导入数据。