簡體   English   中英

使用將數據加載到CSV文件加載到mysql表中。 如何將以下查詢轉換為JOOQ?

[英]Load CSV file to a mysql table using Load data into. How do I convert the following query into JOOQ?

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:

在此處輸入圖片說明

表格Test_table

在此處輸入圖片說明

問題1:幫我將其轉換為JOOQ 3.6問題2:我要避免第1行出現空數據。

jOOQ為此提供了CSV導入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"

有一些解決方法:

  1. 您可以修補CSV數據並在加載這些列之前添加它們。
  2. 您可以使用DSLContext.fetchFromCSV() ,然后使用stream().map()來添加丟失的數據,然后再使用替代的Record導入API,而不是建議的CSV導入API
  3. 您可以在導入此數據后立即運行一個簡單的UPDATE語句。

性能說明

請注意,可以通過指定批量,批處理和提交大小來微調jOOQ的加載器API。 盡管如此,數據庫的現成導入實現仍然很可能比必須通過JDBC進行的任何客戶端導入都快得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM