我读得足够多,知道当字符串包含 Postgres 不喜欢的一些字符时就会发生这种情况。但是,我不知道是否有办法在写入字符串之前验证它们。特别是,我正在进行批量插入。
\n\ninsert into foo(col1,col2,col3) values ('a',2,3),('b',4,0),....\nRun Code Online (Sandbox Code Playgroud)\n\n我的数据库设置如下:
\n\n Name | Owner | Encoding | Collate | Ctype | Access privileges\n------------+--------+----------+---------+-------+-------------------\n stats | me | UTF8 | C | C |\nRun Code Online (Sandbox Code Playgroud)\n\n定期地,一些坏字符串会进入并且整个插入将失败(例如change\xc3\xaf\xc2\xbf\xc2\xbd\xc3\xaf\xc2\xbf\xc2\xbd\xc3\xaf\xc2\xbf\xc2\xbd=)。我在单个插入中批量处理了相当多的值,因此我希望理想地验证字符串而不是轰炸整个插入。是否有 Postgres 插入中不允许使用的字符的列表?
使用 postgresql-jdbc 9.1-901.jdbc4
\n此消息意味着您的字符串数据"\0"中有一个空字符。
我找不到这方面的权威引用(如果你有的话请告诉我)。
在https://www.postgresql.org/message-id/alpine.BSO.2.00.0906031639270.2432%40leary.csoft.net上进行了讨论
在https://www.postgresql.org/docs/9.3/static/functions-string.html传递官方文档时提到了这一点
允许使用所有其他字符。