从文件复制ERROR:整数的输入语法无效:“1”

时间:2018-01-14 19:00:17

标签: r postgresql psql rpostgresql

我在R中使用PostgresSQL 10和RPostgreSQL包。

我创建了一个新表:

CREATE TABLE people (
    id integer NOT NULL,
    name character varying,
    birthdate date,
    deathdate date
);

然后尝试复制文件:

COPY people (id, name, birthdate, deathdate) 
  FROM '\people.sql'
  ENCODING 'UTF-8';

然后出现以下错误:

Error in postgresqlExecStatement(conn, statement, ...) :    RS-DBI
driver: (could not Retrieve the result : ERROR:  invalid input syntax
for integer: "1" CONTEXT:  COPY people, line 1, column id: "1"

我确实想知道这是否是编码错误,所以跑了并得到了:

readr::guess_encoding("\people.sql")
# A tibble: 4 x 2
      encoding confidence
         <chr>      <dbl>
1        UTF-8       1.00
2 windows-1252       0.37
3 windows-1254       0.37
4 windows-1250       0.28

我已经尝试过其他不太可能的Windows编码,但是这也不起作用并且引发与第1行类似的问题,例如windows-1252显示错误:整数的输入语法无效:“ 1"

该文件的前几行是:

1   50 Cent 1975-07-06  \N
2   A. Michael Baldwin  1963-04-04  \N

和最后两行:

8396    Zubaida Sahar   \N  \N
8397    Zuhair Haddad   \N  \N 
\.

知道可能导致这种情况的原因吗?

谢谢

1 个答案:

答案 0 :(得分:0)

感谢wildplasser对此评论的评论:

1 - 删除字节顺序标记 - 我使用Notepad ++并转换为UTF-8 (see this post)

2 - 完全删除文件标记的错误结尾

\.