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
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