我正在使用i18n
从数据库读取并将记录转储到File中。
我想转储CSV格式的记录,并在每条记录之间换行。我调查了Jooq
并在Google上进行了研究,但没有找到任何帮助。 Jooq Docs
支持Jooq
,但如何在我的用例中合并该功能。
我正在使用以下代码将记录转储到文件中:
CSV format
答案 0 :(得分:1)
使用CSVFormat.newline()
属性:
String csv = results.formatCSV(new CSVFormat().newline("\n\n"));
或者,由于您要基于行子集迭代光标,因此您可能也想删除标题:
String csv = results.formatCSV(new CSVFormat().newline("\n\n").header(false));
这还将在末尾产生两个尾随的换行符,如果不需要,可以轻松删除它们:
csv = csv.trim();
答案 1 :(得分:0)
您可以直接从Result<Record> results
格式化记录,而无需手动遍历每条记录。
唯一的事情是,由于您要分批提取MAX_FETCH_SIZE
中的记录,因此每批格式化的csv将包含标头,因此您可能只需要在第一批中写标头。
@Cleanup Cursor<Record> cursor = query.fetchSize(2).fetchLazy();
boolean includeHeaders = true;
int dataStartIndex = 0;
while(cursor.hasNext()){
Result<Record> results = cursor.fetchNext(2);
String csv = results.formatCSV();
if (includeHeaders) {
writer.write(csv);
dataStartIndex = csv.indexOf('\n') + 1;
includeHeaders = false;
continue;
}
writer.write(csv.substring(dataStartIndex));
}