我刚刚在我的项目中得到了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