Dav*_*ith 5 migration postgresql encoding
# Dump my database to a tar file
pg_dump -f myDatabase.tar -F t -h myServer -U myUser -W -i myDatabase
# create a new database
createdb -h myServer -U myUser -T template0 myDatabaseCopy
# restore my database
pg_restore -d myDatabaseCopy -h myServer -U myUser myDatabase.tar
Run Code Online (Sandbox Code Playgroud)
然后我收到此错误,导入整个表失败.
psql:/home/me/myDatabase.tar:660266:错误:类型字符变化的值太长(100)语境:复制myTable,第591行,列myColumn:"国务院的前成员 - 伊拉克未来的项目,现在在大西洋公路上..."
那些帽子是那些恼人的单卷和双引号.在我看来,它们首先适合列,但在导出/导入过程中它们会扩展,然后不再适合字符变化(100)列.
我实际上是在一个我没有获得许可的服务器上移动一个实时数据库,所以一个只有sql的解决方案会很棒.有没有办法做类似的事情
UPDATE myTable SET myColumn = removeNonAscii(myColumn) WHERE hasNonAscii(myColumn)
Run Code Online (Sandbox Code Playgroud)
编辑:哈哈得到它.我变了
createdb -h myServer -U myUser -T template0 myDatabaseCopy
Run Code Online (Sandbox Code Playgroud)
至
createdb -h myServer -U myUser -T template0 -E UTF8 myDatabaseCopy
Run Code Online (Sandbox Code Playgroud)
这就是诀窍.
小智 9
似乎问题是由数据库编码引起的.例如,源数据库以"UTF-8"编码,目标位于更受限制的字符集中,如"SQL_ASCII".
检查这两个数据库的编码(\l的psql工具可以帮助).如果它们不同,请使用-Exxx选项重新创建目标数据库.
| 归档时间: |
|
| 查看次数: |
1491 次 |
| 最近记录: |