LOAD DATA INFILE '/testing.csv'
IGNORE INTO TABLE Test_table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
IGNORE 1 ROWS (@col1)
SET test_ID="100",
test_reg_ID ="26003",
VALUE =@col1;
testing.csv:
TABLE Test_table
问题1:帮助我将其转换为JOOQ 3.6 问题2:我想避免落在第1行的空数据。
答案 0 :(得分:0)
为此目的,jOOQ有一个CSV import API。以下是您将MySQL命令转换为jOOQ的方法:
DSL.using(configuration)
.loadInto(TEST_TABLE)
.loadCSV(new File("/testing.csv"))
.fields(TEST_TABLE.VALUE)
.separator(',')
// Available in jOOQ 3.10 only: https://github.com/jOOQ/jOOQ/issues/5737
// .lineSeparator("\n")
.ignoreRows(1)
.execute();
请注意,jOOQ的Loader API并不像MySQL那样支持这些默认表达式(参见#5740):
SET test_ID="100",
test_reg_ID ="26003"
有一些解决方法:
DSLContext.fetchFromCSV()
,然后使用stream().map()
添加缺失的数据,然后再使用替代Record import API而不是建议的CSV import API UPDATE
语句。请注意,可以通过指定bulk, batch, and commit sizes来微调jOOQ的加载程序API。尽管如此,数据库的开箱即用导入实现仍然比任何必须通过JDBC的客户端导入快得多。