处理行时出现意外的END OF FILE

时间:2016-12-13 10:10:52

标签: sql insert sql-insert bulkinsert ingres

将输入文件复制到空db表时出现以下错误。输入文件只有56732行,但是我在第56733行收到错误:

continue
* * * * * * * * * *
copy table temptable
(
abc     = c(3),
bcao    = c(1),
cba     = c(10),
test    = c(1)nl   
)
from 'tempfile'
Executing . . .

E_CO0024 COPY: Unexpected END OF FILE while processing row 56733.

E_CO002A COPY: Copy has been aborted.

任何人都有任何想法为什么它试图处理额外的行?我有四个其他文件完全相同的格式与不同的数据,它处理正常。

不知道为什么会这样......

1 个答案:

答案 0 :(得分:2)

最可能的原因是您在最后一行数据后有一些空格或类似内容。您已在测试时将新行设置为分隔符,因此该文件需要以新行结束。删除数据之后的任何内容,这不是一个空白的新行。

举个例子。使用以下代码:

DECLARE GLOBAL TEMPORARY TABLE test (
    v int
) ON COMMIT PRESERVE ROWS WITH NORECOVERY;

COPY test (
    v = c(5)nl
) FROM 'J:\test.csv';

对于以下数据,将在第4行导致错误:

34565
37457
35764
45685
第5行的

和错误(用于显示问题的标点符号,但它可能是您自己文件中的空格或制表符):

34565
37457
35764
45685
.