最近在做數據遷移時,遇到了數據表導入時,總是提示 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