# 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然后我得到这个错误,整个表的导入都失败了。
myColumn: /home/me/myDatabase.tar:660266:错误:值对于类型字符变化(100)来说太长了上下文: COPY myTable,第591行,myColumn列:“前国务院伊拉克的未来项目的成员,现在在大西洋委员会...”
那些帽子-a是那些讨厌的卷曲的单引号和双引号。在我看来,它们一开始适合放在列中,但在导出/导入过程中的某个地方,它们会扩展,然后不再适合字符变化(100)列。
我实际上是在一个我几乎没有权限的服务器上移动一个实时数据库,所以一个只有sql的解决方案将是很好的。有没有办法做像这样的事情
UPDATE myTable SET myColumn = removeNonAscii(myColumn) WHERE hasNonAscii(myColumn)编辑: habe得到了它。我变了
createdb -h myServer -U myUser -T template0 myDatabaseCopy至
createdb -h myServer -U myUser -T template0 -E UTF8 myDatabaseCopy这就起到了作用。
发布于 2009-12-04 07:30:39
这个问题似乎是由数据库编码引起的。例如,源数据库用“UTF-8”编码,目标数据库用更严格的字符集编码,比如“SQL_ASCII”。
检查两个数据库的编码( psql实用程序的\l帮助)。如果它们不同,请使用-Exxx选项重新创建目标数据库。
https://stackoverflow.com/questions/1842564
复制相似问题