这是使用JooQ 3.7.0。 JooQ允许您将其API用于import data from, for instance, a CSV。JooQ的Loader <?>的.commit *()或.batch *()方法是否在TransactionalRunnable中?
让我们看看这个代码实现的一个例子(在Java中8,作为一种方法参考)一个TransactionalRunnable
的:
// csvPath is a Path to a CSV file
private void writeCsv(final Configuration configuration)
{
try (
final Reader reader = Files.newBufferedReader(csvPath);
) {
final Loader<PermethodMetricsRecord> loader = DSL.using(configuration)
.loadInto(PERMETHOD_METRICS)
.loadCSV(reader)
.fields(PERMETHOD_METRICS.fields())
.execute();
LOGGER.info("{} lines stored in database", loader.stored());
} catch (IOException e) {
throw new RuntimeException("Cannot open CSV for reading", e);
}
}
现在,调用一个DSLContext
的.loadInto()
是LoaderOptionStep
。这个类有几种方法,特别是默认的提交策略(.commitNone()
是默认的)和批处理方法。
这里我们是在由JooQ创建的交易中;除了缺省值之外,我没有指定任何提交或批处理策略。
根据我使用的RDBMS引擎,是否使用任何提交/批处理策略对我有影响?请注意,就我而言,这是PostgreSQL 9.4.X.
你是什么意思的“提交或批量策略”? –
我的意思是我保留默认值,如代码所示;我不批量或批量插入或其他任何东西 – fge
哦,我明白了。显然,你的意思是'Loader' API标志。我的错。我以为你指的是一些JDBC设置......很快就会回答 –