gpt4 book ai didi

java - RegEx - Java Split 命令解析 Csv 文件

转载 作者:行者123 更新时间:2023-12-02 08:31:00 25 4
gpt4 key购买 nike

我有一个以下格式的 CSV

11000,Christopher,Nolan,MR.,Inception,25993,France,"Lefoullon,Paris",920,Director,*461-7755,33-461-7755,12175,"O'Horner, James",12300,"Glebova, Nathalie",,Christophe.Nolan@movies.com,Capital,NEW

Regarding Java Split Command Parsing Csv File

在此链接中@Mark Byers 和@R。 Bemrose 建议 String[] tokens = line.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)", -1 ); 但是,如果您仔细观察上面的 CSV,您会发现一个名为 "O'Horner, James" 的名字会导致问题,并且会抛出 ORA-0917: Missing逗号错误。有没有办法避免它或者必须更正reg-ex?

有点困惑:-o

最佳答案

警告:以下所有内容都是无端猜测和猜测,因为您没有提供任何代码进行验证,而我的 palantir 正在车间进行预防性维护。

思路:早期的“Lefoullon,Paris”不会有问题,但“O'Horner,James”确实有问题...这表明撇号可能是问题的(无害的)原因。

假设:该字段已成功从 CSV 中提取为 O'Horner, James ...请注意,撇号对于 CSV 来说并不是特殊的(并且不会出现在那个宏伟的[参见注释]中)正则表达式)。

但是撇号对于 SQL 来说很重要;撇号引用 SQL 中的字符串文字,数据中的撇号必须加倍。

像这样:INSERT INTO ..... VALUES(...,'O''Horner, James', ...);

如果您在 SQL 接口(interface)中使用参数替换(您应该这样做),那么系统会将您的数据字段转换为有效的 SQL 常量。否则

  • 编写代码来修复每个字符串字段(将每次出现的 ' 替换为 '',然后将结果包装在 ' 前面并返回)

  • google(“SQL注入(inject)”),阅读、悔改并使用参数替换重写你的代码

<小时/>

注:“宏伟”如“C'est magnifique, mais ce n'est pas la guerre”。为了理智起见,请使用 CSV 解析器。

关于java - RegEx - Java Split 命令解析 Csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3361137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com