在存储的函数中使用COPY FROM STDIN

时间:2018-12-19 13:40:38

标签: postgresql stdin plpgsql

我正在尝试将数据从存储的PostgreSQL函数复制到表中。行数据和表名是从一个Java程序接收到的,导致错误的部分是这样的:

_copyquery := FORMAT('COPY %s FROM STDIN (DELIMITER ''|'', FORMAT CSV); %s \.', _tablename, _stdin);
execute _copyquery;

其中_tablename是表名,而_stdin是这样格式化的数据行:

12|34|139901177705664|1545226308991|991389|1545226308991|1545226308991|0|0|0|0|0|0|000|0.0.0.0|0.0.0.0|2328620776|0|0|0|0|0|0|0|0.0.0.0|0.0.0.0|0|0|0|0||0|0|0|-|0|0|0|0|0|195.46.227.124|33840|10.110.186.41|2123|2|0|3090304976|0.0.0.0|::|0|||0|0|0|0|0|0|0|0|2|5

我得到的错误是:

  

错误:语法错误在“ 12”或附近

其中“ 12”始终是第一个字段,最常见的是12或3。 有什么想法为什么不能解决?

1 个答案:

答案 0 :(得分:0)

我发现我的请求目前无法执行,并决定使用CopyManager以编程方式插入数据。请记住,我正在使用insert语句的数据量会很慢,这是一个很好的解决方案。