New versions: Dev (3.15) | Latest (3.14) | 3.13 | 3.12 | 3.11 | 3.10 | 3.9 | 3.8 | Old versions: 3.7 | 3.6 | 3.5 | 3.4 | 3.3

Importing CSV

Applies to ✅ Open Source Edition   ✅ Express Edition   ✅ Professional Edition   ✅ Enterprise Edition

The below CSV data represents two author records that may have been exported previously, by jOOQ's exporting functionality, and then modified in Microsoft Excel or any other spreadsheet tool:

ID,AUTHOR_ID,TITLE <-- Note the CSV header. By default, the first line is ignored
1,1,1984
2,1,Animal Farm

The following examples show how to map source and target tables.

// Specify fields from the target table to be matched with fields from the source CSV by position.
// Positional matching is independent of the presence of a header row in the CSV content.
create.loadInto(BOOK)
      .loadCSV(inputstream, encoding)
      .fields(BOOK.ID, BOOK.AUTHOR_ID, BOOK.TITLE)
      .execute();
      
// Use "null" field placeholders to ignore source columns by position.
create.loadInto(BOOK)
      .loadCSV(inputstream, encoding)
      .fields(BOOK.ID, null, BOOK.TITLE)
      .execute();

CSV specific options

You may pass one of the following flags to specify how the CSV content should be parsed:

create.loadInto(BOOK)
      .loadCSV(inputstream, encoding)
      .fields(BOOK.ID, BOOK.AUTHOR_ID, BOOK.TITLE)
      
      // Ignore a certain number of header rows. By default, this is 1.
      .ignoreRows(1)
      
      // The quote character for use with string content containing quotes or separators. By default, this is "
      .quote('"')
      
      // The separator character that separates columns. By default, this is ,
      .separator(',')
      
      // The null string encoding, which allows for distinguishing between empty strings and null. By default, there is no null string.
      .nullString("{null}")
      .execute();

Feedback

Do you have any feedback about this page? We'd love to hear it!

The jOOQ Logo