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