質問: changeType For Each dr As DataRow In dt_Base.Rows dt_Clone.ImportRow(dr) Next ``` なお、DBはMySQL5.6ですが、権限はSelectしかないため、Createなどは出来ません。 サンプルで実行したものは、DBは30万件、CSVは2万件程度で、 一時的に、Cloneをしているためメモリが倍掛けで増えています。(OutOfMemoryが発生しやすい) 問題としては、CSVは自動で型決定し、DBは元の型は踏襲しているようで 型合わせのためCloneしているのが、今回の問題になっています。 今回のデータは、10桁の数値データを結合条件にしており、 CSVはDobule、DBはVarchar(String型)になっていたため、String型に合わせています。 ・Cast(hoge as Unsignd)にしましたが、DoubleとUInt64は型不一致エラー。 ・この例ではDobuleにCastすればよいですが、汎用的にするには、あらかじめCSVの型がわからないと難しい。 ・0埋め問題もあるので、これも確実ではない。(001と 1の関係) Datatableに巨大なデータを入れると問題があるという情報はありましたが、 結合の案が思い浮かばなかったため、何か良案があれば教えてください。
回答: datatableに巨大なデータをいれると、それだけメモリが圧迫されるのが問題なのでは? 100件なり、1000件なりレコードを区切って、insert文を編集しCSVからDBへ更新するのが望ましいと思います。