質問: バッチを使用してcsvファイルをmysqlにロードしますか? バッチを使用して.csvファイルをmysqlサーバーにロードするためのヘルプを探していますが、基本的な質問はほとんどありません。問題:1)csvファイルデータの間に(カンマ)が含まれている可能性があります(例:説明)。これらのデータをインポート処理するにはどうすればよいですか?2)excelからcsvをロードするには、コンマを含むデータを「」(二重引用符)で囲みます[以下の例のように]。インポートでこれをどのように処理できますか?ヘッダー付きのサンプルcsvは次のとおりです:name,id,subject,examdate,mark,description prabhat,1,math,2/10/2013,25,test data for prabhat. murari,2,science,2/11/2013,24,"test data for his's test, where we can test 2nd row, test." sanjay,3,science,,25,test only. インポートに使用されるsqlステートメント:load data local infile "c:\\eqa\\project\\input.csv" into table request character set latin1 fields terminated by',' lines terminated by'\n' ignore 1 lines どうすればこれを行うことができますか?
回答: mysqlを使用してload data local infileおよび テーブルへのデータのロード を使用しているため、この問題の解決に役立つこの機能の一部として提供される簡単なソリューションがあります。使用しているmysql構文のfield句の一部としてenclosed by '"'句を必ず含める必要があります。以下は、この例です。load data local infile "c:\\eqa\\project\\input.csv" into table request character set latin1 fields terminated by',' enclosed by '"' lines terminated by'\n' ignore 1 lines これにより、入力ファイルのフィールド値が二重引用符とでコンマで区切られていることがわかります。 -二重引用符で囲まれたすべての文字がインポートされます。その他のリソース データをテーブルにロードする load data infile構文 load data infileは、外部ソースから取得したファイルを読み取るために使用できます。たとえば、多くのプログラムでは、データをコンマ区切り値(csv)形式でエクスポートできます。たとえば、行のフィールドはコンマで区切られ、二重引用符で囲まれ、列名の最初の行が含まれます。このようなファイルの行がキャリッジリターン/改行のペアで終了している場合、ここに示すステートメントは、ファイルのロードに使用するフィールド処理オプションと行処理オプションを示しています。 load data infile 'data.txt' into table tbl_name fields terminated by ',' enclosed by '"' lines terminated by '\r\n' ignore 1 lines; 入力の場合、enclosed by文字が存在する場合は、フィールド値の末尾から削除されます。 (これは、optionallyが指定されているかどうかに関係なく当てはまります。optionallyは入力の解釈に影響しません。)enclosed by文字の前にあるescaped by文字の出現は解釈されます。現在のフィールド値の一部として。 フィールドがenclosed by文字で始まる場合、その文字のインスタンスは、フィールドまたは行terminated byシーケンスが後に続く場合にのみフィールド値を終了するものとして認識されます。あいまいさを回避するために、フィールド値内でのenclosed by文字の出現を2倍にして、文字の単一インスタンスとして解釈することができます。たとえば、enclosed by '"'が指定されている場合、引用符は次のように処理されます。 "the ""big"" boss" -> the "big" boss the "big" boss -> the "big" boss the ""big"" boss -> the ""big"" boss ソース