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 は上記のような不具合で項目数など合わなくてもエラーなしで無理やり取り込むのが困ったところ…