マイファイルの形式は次のとおりです。
Table1; Info
rec_x11;rec_x21;rec_x31;rec_x41
rec_x12;rec_x22;rec_x32;rec_x42
...
\n
Table2; Info
rec_x11;rec_x21;rec_x31;rec_x41
rec_x12;rec_x22;rec_x32;rec_x42
...
\n
Table3; Info
rec_x11;rec_x21;rec_x31;rec_x41
rec_x12;rec_x22;rec_x32;rec_x42
...
TableXヘッダーの後の次の行から始まり、空の行区切り文字で終わるレコードの各バッチは、約700〜800行のサイズです。
そのような各行のバッチ( ...)は、バッチのヘッダーに示されている関連するMyISAMrec_xyz
テーブル名にインポートする必要があります( )TableX
私は、シェルコマンドを使用してストリームをLOADDATAコマンドにパイプラインするオプションに精通しています。
このファイルを解析し、毎回(forループで、場合によってはseekコマンドを使用して)レコードの単一バッチに対してLOADDATAを実行する単純なjavasnipetコードに興味があります。
今のところ、IGNORE LINESを使用して処理済みのレコードをジャンプしようとしていますが、下の行を無視するオプションがあるかどうかわかりません。
このタイプのファイルを解析してDBにロードするためのより効率的な方法はありますか?
編集
JDBCはLOAD DATA
5.1.3から始まる入力ストリームをサポートしていることを読みましたが、それを使用して入力ストリームでファイルを反復処理し、LOAD DATA
毎回ステートメントを変更できますか?