PostgreSQL将数据复制到表中

4
我正在使用Postgresql中的复制命令,我有一行数据在文本文件中被制表符分隔,我想将它复制到数据库表中。
我遇到了一个错误: ERROR: invalid byte sequence for encoding "UTF8": 0x00 SQL state: 22021 Context: COPY real_acct1, line 113038
所以我去了文本文件中的第113038行,并将它与4或5个相邻行一起复制到一个新的文本文件中。这样新的数据就可以复制进去了。
有什么有用的想法吗?这是地块属性信息。

文件的编码是什么?PostgreSQL 版本是多少? - filiprem
@underdark 谢谢。我已经遇到了编码问题,我使用 Python 预处理了文本文件以处理这些编码。但是这似乎与您指出的链接不同,因为如果我将引发错误的那一行放入另一个文本文件中,然后 postgressql 就可以正常加载。 - Justin
@filiprem 我不确定。请查看我的留言,了解underdark的情况。我遇到了西班牙带重音符号和一些奇怪的<<字符的问题。我把它们移到另一个文本文件中,并会手动加载它们。但这个问题似乎不同。谢谢。 - Justin
@underdark 谢谢。我删除了那一行,成功加载了130万条记录。然后我从一个只有那一行的文本文件中加载了它。我猜这可能与记录数有关,因为当你看到我上面关于如何处理较少行数的陈述时,就会明白。也许其他人可以更详细地解释。 - Justin
1
错误信息显示此行存在 NUL 字节。如果您将其复制到另一个文件并保存,编辑器过滤掉 NUL 字节的可能性非常大。很多文本编辑器都会这样做(例如 Windows 记事本)。 - Daniel Vérité
显示剩余3条评论
1个回答

2

你的问题实际上是字符编码问题。

最简单的解决方法是通过iconv(假设你在Unix机器上)处理导入的数据。

iconv -f 原始字符集 -t utf-8 原始文件 > 新文件


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接