我用的是PostgreSQL 8.2,我有一个access的数据表,听说可以用copy命令将这个表导入到PostgreSQL中,就试试了,出现了以下错误。请问怎么解决。好想是编码的错误。我的PostgreSQL安装时是用UTF-8。access表
我导出后为
example.txt
example.csv在PostgreSQL中建立一个空表
 然后用
copy myshi(新建表名) from 'E:\\oppo\\example.txt' USING   DELIMITERS   ',';
然后出现这个错误:ERROR: invalid byte sequence for encoding "UTF8": 0xc1f5
SQL 状态: 22021
建议:This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".
事件背景:COPY myshi, line 1问:怎么做?是不是access中那个表的编码跟PostgreSQL中的不 兼容啊!该怎么解决啊?

解决方案 »

  1.   

    example.txt 用记事本打开,另存为UTF8格式。
      

  2.   


    非常感谢,整出来了!可是又出 新问题了!我在access中和PostgreSQL中用同样的SQL语句建立的表,然后根据上述方法,将access中表的内容导入到PostgreSQL中却出现了这个错误,为什么呢?
    ERROR: invalid input syntax for integer: "1"是不是因为PostgreSQL中建表时候的这句话呢?NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "yiyi_pkey" for table "yiyi"高手,请你再指点一下,我是标准的菜鸟啊!
      

  3.   

    select * from myshi;看一样,应该是你的 example.txt 有重复的记录了。
      

  4.   


    这个倒不是?不知道什么问题!我是试试这个copy的用法,随便建了个表,在access中建的表,然后就输入了两行数据,不可能重复的!然后导出后,另存为utf—8格式,
    如下:
    1,"申慧超",110,"[email protected]  "
    2,"lele",119,"[email protected]    "在PostgreSQL中用access中一样的sql语句建的表,然后,再copy的,copy myshi from 'E:\\oppo\\myshi.txt' USING   DELIMITERS   ','就出现了上述的问题!
    ERROR: invalid input syntax for integer: "1" 
    还真不知道为什么!
    高手再帮帮忙吧,谢谢你了,这几天老麻烦你了,跟你学了真不少呢!
      

  5.   

    1、不用转换成UTF8,在导入前加个命令 SET CLIENT_ENCODING=GBK
    2、不知道8.2版本有什么区别,在8.3版本用 copy xxx from ... csv是可以的
      

  6.   


    说下copy xxx from ... csv的例子吧,我看看跟我的什么区别!
    我的PostgreSQL种没有gbk,安装时设定的是UTF8,所以就另存为了,这个应该没什么关系。
    我现在的错误主要是说,
    invalid input syntax for integer: "1" 
    其中“1”是我表中的第一个id值,类型是int类型的,怎么会无效输入呢?
      

  7.   

    就是你这个例子,表的字段为INTEGER,VARCHAR,INTEGER,VARCHAR
    版本8.3用SET CLIENT_ENCODING=GBK
    copy myshi from 'E:\\oppo\\myshi.txt' CSV
    是没问题.理论上是不会出现你上面的错误, 出现这错误可能有其他原因.另外:client_encoding和server encoding 是2个不同的概念,请不要混淆,理解了就不用多走一步,另存为UTF8是个蹩脚而多余的方法.