目标:把A库中的表T1导入到B库中。
步骤:
1)在A库中复制T1的表结构并在B库中创建A-T1的副本,此处需注意表名一致;
2)把A库中T1表生成.sql文件;
3)在postgres安装目录bin目录下打开命令行,登录到数据库中。执行语句如下:
psql -U <username> -d <database_name> -h <host> -p <port>
其中 <username>
为登录数据库所需的用户名,<database_name>
为目标数据库的名称,<host>
为主机地址,默认为 localhost,<port>
为监听的端口号,默认为 5432。如果没有特定的配置,则不需要指定这些参数;
4)成功连接到数据库之后,输入以下命令来导入 SQL 文件:
\i /path/to/your/file.sql
将 /path/to/your/file.sql
替换为你想要导入的 SQL 文件的路径;
正常在此便可成功,但是我遇到如下问题:
①character with byte sequence 0xaf 0xa6 in encoding “GBK” has no equivalent in encoding “UTF8”
②duplicate key value violates unique constraint "xxx_pkey"
问题解决:
问题①可使用以下方法查看编码格式是否一致:
postgres=# select name,setting,context from pg_settings where name like '%encoding%';
name | setting | context
-----------------+---------+----------
client_encoding | GBK | user
server_encoding | UTF8 | internal
(2 行记录)
使用以下语句使客户端与服务端编码一致:
\encoding UTF8
问题② 是常见的数据库表主键重复,解决办法很简单,删除数据重新导入即可。