[英]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
在此鏈接中,@ 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.