1. 程式人生 > >COPY命令:為PostgreSQL批量匯入資料

COPY命令:為PostgreSQL批量匯入資料

任務:將excel表中的資料匯入到PostgreSQL資料庫的某張表中。

工具:PostgreSQL客戶端pgAdmin。

步驟:

1.將excel表格欄位,按照postgresql 資料庫中表的欄位順序來整理資料,並儲存為csv檔案。

2.用記事本開啟csv檔案,另存為UTF-8格式。

3.使用PgAdmin客戶端連結postgresql資料庫,執行如下指令碼,匯入csv檔案到PostgreSQL資料表:

 copy testdata from 'd:/test/testdata.csv' delimiter as',' csv quote as '"'

  注:testdata 是postgreSQL資料庫表的名稱。

注意事項:

1.test目錄需要賦予postgres 使用者可讀寫的許可權,否則會有如下報錯資訊:

   ERROR: could not open file "d:/testdata2.csv" forwriting: Permission denied

2.csv檔案要為utf-8格式,否則匯入時可能會有報錯:

 ERROR: invalid bytesequence for encoding "UTF8": 0xcdf5

3.注意windows環境下檔案路徑的表述方式,如:d:/test/data.csv

附錄:

1.postgreSQL資料表也可以批量匯出為csv格式,命令如下:

  copy testdata

to 'd:/test/testdata.csv' delimiteras ',' csv quote as '"'

2.copy 命令的其他用法:

  COPY -- 在表和檔案之間拷貝資料

(1)COPY FROM

  COPY tablename [ ( column [, ...] ) ]
    FROM {'filename' | STDIN }
    [ [ WITH]
         [ BINARY ]
         [ OIDS ]
         [ DELIMITER [ AS ] 'delimiter']
         [ NULL [ AS ] 'null string

']
         [ CSV [ HEADER ]
               [ QUOTE [ AS ] 'quote' ]
               [ ESCAPE [ AS ] 'escape']
               [ FORCE NOT NULL column [, ...]]
(2)COPY TO

COPY tablename [ (column [, ...] ) ]
    TO {'filename' | STDOUT }

  [ [ WITH ]

         [ BINARY ]

         [ OIDS ]

         [ DELIMITER [ AS ] 'delimiter']
         [ NULL [ AS ] 'null string']
         [ CSV [ QUOTE [ AS ] 'quote']
               [ ESCAPE [ AS ] 'escape']
               [ FORCE QUOTE column [, ...]]
引數詳細說明見:PostgreSQL 8.1 中文文件,http://www.pgsqldb.org/pgsqldoc-8.1c/sql-copy.html