H2 DB CSVWRITE 字符串中的重复双引号
Posted
技术标签:
【中文标题】H2 DB CSVWRITE 字符串中的重复双引号【英文标题】:H2 DB CSVWRITE Duplicate Double Quotes Inside a String 【发布时间】:2013-03-15 10:11:45 【问题描述】:我尝试使用CSVWRITE
函数将H2
DB 中的表导出为CSV,并发现双引号是否包含在varchar
列中,它们将被复制。
例如。 - 'hello"howareyou' will be 'hello""howareyou' in the written csv.
尝试使用转义字符和其他一些组合保存此 varchar 列,但结果相同。
以下是我为测试此问题而创建的表格列以及我得到的结果 CSV 值。
My column CSV written value
------------------------------
hello"how hello""how
hello\"how hello\""how
hello""how hello""""how
hello\""how hello\""""how
hello\\"how hello\\""how
hello\\\\"how hello\\\\""how
hello["]how hello[""]how
hello"e;how hello"e;how
以下是我的 CSVWrite 命令:
CALL CSVWRITE(
'#DELTA_CSV_DIR#/DELTA.csv',
'SELECT ccc from temptemp',
null, '|', '');
我做错了吗?或者我可以使用任何选项或解决方法来避免这种情况?
提前致谢。
【问题讨论】:
【参考方案1】:您目前正在使用 the built-in CSVWRITE function 和以下选项:
fileName = '#DELTA_CSV_DIR#/DELTA.csv' query = 'SELECT ccc from temptemp' characterSet = 默认 (UTF-8) fieldSeparator = '|' fieldDelimiter = ''(空字符串)As documented, the default escape character is a double quote,以便使用双引号对双引号进行转义(与在 Java 字符串中使用反斜杠转义反斜杠的方式相同)。需要转义字符来转义字段分隔符。
您可以按如下方式禁用转义字符:
CALL CSVWRITE(
'#DELTA_CSV_DIR#/DELTA.csv',
'SELECT ccc from temptemp',
'fieldSeparator=| fieldDelimiter= escape=');
这也为选项使用了更具可读性的新格式。
【讨论】:
谢谢@Thomas。有用。仅供参考 - 在 h2-1.2.140 上对此进行测试并得到 java.io.UnsupportedEncodingException。升级到最新的 h2-1.3.171 并且可以工作。 你说得对,1.2.140版本还不支持这个功能。以上是关于H2 DB CSVWRITE 字符串中的重复双引号的主要内容,如果未能解决你的问题,请参考以下文章