【发布时间】:2012-09-29 23:26:57
【问题描述】:
我的文件格式如下:
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 行。
每批这样的行(rec_xyz...)都需要导入到批头(TableX)中指明的相关MyISAM表名中
我熟悉使用 shell 命令将流传输到 LOAD DATA 命令的选项。
我对简单的 java snipet 代码很感兴趣,它会解析这个文件并每次为一批记录执行 LOAD DATA(在 for 循环中,可能使用 seek 命令)。
现在我正在尝试使用 IGNORE LINES 来跳过已处理的记录,但我不熟悉是否可以选择忽略 BELOW 中的行?
有没有更有效的方法来解析这种类型的文件并将其加载到 DB 中?
编辑
我已经读到 JDBC 从 5.1.3 开始支持到 LOAD DATA 的输入流,我可以使用它通过输入流迭代文件并每次更改 LOAD DATA 语句吗?
【问题讨论】:
-
您能否对每个要添加到另一个
LOAD DATA命令的表进行搜索和替换?
标签: java mysql csv load-data-infile