簡體   English   中英

RegEx-Java Split Command解析Csv文件

[英]RegEx - Java Split Command Parsing Csv File

我有以下格式的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

關於Java Split命令解析Csv文件

在此鏈接中,@ Mark Byers和@R。 Bemrose建議使用String[] tokens = line.split(",(?=([^\\"]*\\"[^\\"]*\\")*[^\\"]*$)", -1);但是如果您在上面的CSV文件中仔細注意到,您會發現名稱"O'Horner, James"正在引起問題,並拋出ORA-0917: missing comma錯誤。有沒有辦法避免這種情況,或者正則表達式必須被糾正?

有點困惑:-o

注意:由於您沒有提供任何代碼來進行驗證,因此以下所有內容都是閑置的推測和猜測,而我的palantir則在車間進行預防性維護。

思路:您對早期的"Lefoullon,Paris"沒有問題,但是對"O'Horner, James"問題……這表明撇號可能是導致“無辜”的原因。問題。

假設:以O'Horner, James身份成功從CSV提取字段。請注意,撇號對CSV而言並不特殊(在宏偉的正則表達式中不會出現)。

但是,撇號對SQL很重要。 撇號在SQL中引用字符串文字,並且數據中的撇號必須加倍。

像這樣: INSERT INTO ..... VALUES(...,'O''Horner, James', ...);

如果您正在SQL接口中使用參數替換(應該如此),則將為您完成將數據字段轉換為有效的SQL常量的操作。 除此以外

  • 編寫代碼以修復每個字符串字段(用''替換每次出現的' ,然后將結果包裝在'前后”)

  • google(“ SQL注入”),使用參數替換讀取,re悔和重寫您的代碼


注意:如“ C'est magnifique,mais ce n'est pas la guerre”中的“ magnificent”。 為了理智,請使用CSV解析器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM