首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于值太长的非ascii字符,移动PostgreSQL数据库失败

对于值太长的非ascii字符,移动PostgreSQL数据库失败
EN

Stack Overflow用户
提问于 2009-12-04 04:10:57
回答 1查看 1.7K关注 0票数 5
代码语言:javascript
复制
# 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的解决方案将是很好的。有没有办法做像这样的事情

代码语言:javascript
复制
UPDATE myTable SET myColumn = removeNonAscii(myColumn) WHERE hasNonAscii(myColumn)

编辑: habe得到了它。我变了

代码语言:javascript
复制
createdb -h myServer -U myUser -T template0 myDatabaseCopy

代码语言:javascript
复制
createdb -h myServer -U myUser -T template0 -E UTF8 myDatabaseCopy

这就起到了作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-12-04 07:30:39

这个问题似乎是由数据库编码引起的。例如,源数据库用“UTF-8”编码,目标数据库用更严格的字符集编码,比如“SQL_ASCII”。

检查两个数据库的编码( psql实用程序的\l帮助)。如果它们不同,请使用-Exxx选项重新创建目标数据库。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1842564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档