postgresql 数据备份与恢复

 

最近在做数据迁移时,遇到了数据表导入时,总是提示 string  too long 或者 sequence 问题。 问题很容易定位:字符编码。通过sql语句查看数据库字符编码:select datname, pg_encoding_to_char(encoding) from pg_database 。 查到一个为UTF8,另一个是SQL_ASCII,改变数据库字符编码即可,保持一致。  

一、首先:保持数据库的字符编码和用户名一致。

二、然后再做数据转移:

数据迁移时,通过pg_dump命令

(1) 指定库指定表 pg_dump -d db_name -t table_name -f filename

   恢复:psql -h $host -p $port  -U $user -W $password -d $database < $backup_file 

(2) 压缩 pg_dump -d db_name -t table_name | gzip file_name.gz

   恢复:gunzip -c filename.gz | psql dbname 或者 cat filename.gz | gunzip | psql dbname

(3)切分成小文件多线程执行  pg_dump dbname | split -b 1m - filename

   恢复:cat filename* | psql dbname

 

 

 

 

posted @ 2019-11-07 14:00  Greys  阅读(1191)  评论(0编辑  收藏  举报