Phoenix -> csv ->封装令牌和分隔符之间的无效字符



我需要将 CSV 转储文件上传到凤凰城数据库

不包含任何特殊字符的文件加载没有问题

./psql.py -t TTT localhost /home/isaev/output.csv -d';'

但是一旦我尝试加载数据字段与引号相遇的同一文件,就会出现错误

java.lang.RuntimeException: java.io.IOException: (line 1) invalid char between encapsulated token and delimiter
at org.apache.commons.csv.CSVParser$1.getNextRecord(CSVParser.java:398)
at org.apache.commons.csv.CSVParser$1.hasNext(CSVParser.java:407)
at org.apache.phoenix.util.UpsertExecutor.execute(UpsertExecutor.java:132)
at org.apache.phoenix.util.CSVCommonsLoader.upsert(CSVCommonsLoader.java:217)
at org.apache.phoenix.util.CSVCommonsLoader.upsert(CSVCommonsLoader.java:182)
at org.apache.phoenix.util.PhoenixRuntime.main(PhoenixRuntime.java:308)
Caused by: java.io.IOException: (line 1) invalid char between encapsulated token and delimiter
at org.apache.commons.csv.Lexer.parseEncapsulatedToken(Lexer.java:275)
at org.apache.commons.csv.Lexer.nextToken(Lexer.java:152)
at org.apache.commons.csv.CSVParser.nextRecord(CSVParser.java:450)
at org.apache.commons.csv.CSVParser$1.getNextRecord(CSVParser.java:395)
... 5 more

例如,在第一行(第 1 行(我有此条目

5863355029;007320071;赵霆"带着一生的微笑";真;


我自己找到了解决方案: -q'\' 有人可以派上用场吗

您可以使用引号解决问题 2 次:

5863355029;007320071; ZAO ""With a smile for life"";True;

每个字段可以括在双引号中,也可以不括在双引号中。如果字段未用双引号括起来,则双引号可能不会显示在字段中。

如果您有兴趣,请查看此链接:https://www.marklogic.com/blog/delimited_text_mlcp/

最新更新