我剛剛在我的項目中得到了postgreSQL中的數據庫,並且意識到它使用了SQL_ASCII編碼,這意味着我認爲「無編碼」。如何將postgreSQL中的數據庫轉換爲utf8?
那麼將此轉換爲utf8的最簡單方法是什麼?我知道db應該是latin1,轉換是否會損壞內容?
謝謝!
我剛剛在我的項目中得到了postgreSQL中的數據庫,並且意識到它使用了SQL_ASCII編碼,這意味着我認爲「無編碼」。如何將postgreSQL中的數據庫轉換爲utf8?
那麼將此轉換爲utf8的最簡單方法是什麼?我知道db應該是latin1,轉換是否會損壞內容?
謝謝!
轉換爲UTF8不會損壞您的數據,因爲我相信沒有不會轉換的字符。
最好的辦法是重新構建數據庫,即轉儲它,創建一個utf8數據庫,然後將轉儲恢復到該新數據庫。
postgres pg_dump --encoding utf8 main -f main.sql
createdb -E utf8 newMain
psql -f main.sql -d newMain
一旦你高興的是,新的UTF8一個您的數據相匹配,您可以的話當然重命名數據庫。
我使用這些命令解決了問題;
1-)導出
pg_dump --username=postgres --encoding=ISO88591 database -f database.sql
和
2-之後)導入
psql -U postgres -d database < database.sql
這些命令幫我解決轉換SQL_ASCII的問題 - UTF-8
UTF-8轉換完全是關於保存在非UTF-8數據庫中的字符類型:取決於提出的解決方案的數據可能會失敗。 我設法轉換礦井下面這個tutorial,使用重新編碼(從GNU項目,讓你改變即時給定文件的編碼一個小工具),我想出了這個:
pg_dump -v --encoding utf8 -Fc -Z9 -c -f origindb.sql.bin iso8859-1-db
pg_restore origindb.sql.bin | recode iso-8859-1..u8 | psql --dbname utf8converteddb
我上面搜索整個互聯網尋找解決這一問題,並Koyots解決方案工作第一次浪費了無數個小時亂投醫老SQL_ASCII數據庫遷移到新的UTF8數據庫
要在解決擴大後...
我建議保留這兩個數據庫的幾個星期,直到你確信你沒有任何數據丟失(只要你能騰出磁盤空間)
我試過但最後一步,當我在SQL文件中轉儲時,它告訴我「psql:lo17_utf8.sql:6615:錯誤:編碼爲」UTF8「的無效字節序列:0xe96365」 – darkjh 2012-01-10 21:56:25
它似乎是stange,我告訴pg_dump用utf8轉儲數據庫,但是當我使用file命令檢查它時,它告訴我轉儲是在latin1中。 – darkjh 2012-01-10 22:24:28
現在好了,謝謝。 – darkjh 2012-01-10 22:25:27