JDBC PostgreSQL CopyManager.copyIn Returns Zero



我有以下代码,它总是在返回值nRows中产生零。

CopyManager cm = new CopyManager((BaseConnection) connection);
long nRows = cm.copyIn
(
    "COPY myschema.mytable FROM STDIN (FORMAT csv)"
    , new StringReader(strRowData)
);
我们

验证了数据确实在数据库中,尽管文档说了什么,我们还是无法让返回值用于日志记录目的。 有人有想法吗?

编辑:我们的myschema.mytable实际上引用了其子表,这些子表以myschema.mytable_[yyyymmdd]的形式命名,这一事实可能会导致该问题。

EDIT2:我尝试调整数据库表,使其不再引用任何子表,然后读数完美运行。 但是,当我将表格改回原样时,读数再次失败。 所以显然这是在较低级别做的事情,无论是JDBC还是SQL。 目前,我将尝试采取解决方法以完全回避该问题。

这应该有效:

Long affectedRows = 0L;
CopyManager cm = new CopyManager((BaseConnection) connection);
CopyIn ci = cm.copyIn("COPY myschema.mytable FROM STDIN (FORMAT csv)");
ci.writeToCopy(bytes, 0, bytes.length);
affectedRows = ci.endCopy();

你能试试这个吗:

从 STDIN 分隔符 ',' 引用 '''' 标头 CSV 复制 MYSCHEMA.MYTABLE

http://www.postgresqltutorial.com/import-csv-file-into-posgresql-table/

最新更新