C#でMariaDBに接続する際にMySqlConnectorを利用している。

大量のデータを取り込む必要があったため、MySqlBulkLoaderで取り込んだところ、なんかゴミデータみたいのが入るうえに数字も合わない。 よくよく調べたところ、前段のCSV出力個所と、取込時の設定にミスがあった。

CSV出力時の改行の削除

CSV出力にはCSVHelper.CsvWriterを使用しているのだが、Fieldに改行があるとそのままCSVに出力される。CSVファイルは1行1データを前提としているので、ゴミデータが発生する原因になる。

csv.WriteField(col.ToString().Replace("\r", "").Replace("\n", ""))

のように除去することで回避できた

FieldQuatationCharacterの設定

FieldTerminator, LineTerminator は普通に設定したのだが、FieldQuatationCharacter を設定しないと、CSVHelperがせっかく括弧で囲んでくれた中にカンマが含まれていると、そこで区切られてしまう。

mySqlBulkLoader.FieldQuotationCharacter = '"';

と指定することで回避できた。

MySqlConnector の MySqlBulkLoader は上記のような不具合で項目数など合わなくてもエラーなしで無理やり取り込むのが困ったところ…