1. 程式人生 > >pgsql的copy函式

pgsql的copy函式

用pgsql的copy函式將檔案匯入表中:

COPY 命令可以快速的匯入資料到postgresql資料庫中,檔案格式類似TXT、CVS之類。適合批量匯入資料,速度比較快。注意COPY只能用於表,不能用於檢視。

COPY 命令裡面的檔案必須是由伺服器直接讀或寫的檔案,而不是由客戶端應用讀寫。因此,它們必須位於資料庫伺服器上或者可以為資料庫伺服器所訪問,而不是由客戶端做這些事情。它們必須是PostgresqlSQL使用者(伺服器執行的使用者 ID)可以訪問到並且可讀或者可寫,而不是客戶端。 COPY 到一個命名檔案是隻允許資料庫超級使用者進行的,因為它允許讀寫任意伺服器有許可權訪問的檔案。

匯入檔案或者 STDIN到表中

匯出表資料到檔案或 STDOUT

copy命令可以操作的檔案型別有:txt、sql、csv、壓縮檔案、二進位制格式

1、 copy命令匯入資料示例:tb2是表名,delimiter ',' 表示按逗號分隔欄位資料

1

2

3

4

5

6

7

postgresql=# copy tb2 from '/mnt/postgresql/weibo.1000'delimiter ',';

COPY1000

postgresql=# select count(*)from tb2;

 

count

-------

  1000

(1 row)

2、 copy命令匯入匯出資料為sql格式

1

2

3

4

postgresql=# COPY tb2 TO '/mnt/postgresql/weibo.sql';

COPY1000

postgresql=#  COPY tb2 from '/mnt/postgresql/weibo.sql';

COPY2000

3、 copy命令匯出指定欄位資料在控制檯

1

2

3

4

5

6

7

8

9

10

11

12

postgresql=# COPY tb2 (t1,t2,t3) TO STDOUT;

21317568596      1270505818

21317568149      2302617224

21317568470      1297983318

21317568110      2069993004 2302781822

21317568354      362106137 

21317568308      1450475836

21317568584      83103917   

21317568208      1844532765 1713926427

21317568603      1227221083 2478474742

21317568151      1430992492 1253397461

21317567390      1037539510

4、copy命令匯入匯出資料為csv格式

1

2

3

4

postgresql=# COPY  tb2 (t1,t2,t3) TO '/mnt/postgresql/weibo.csv' CSV HEADER;

COPY2000

postgresql=#  COPY tb2 from '/mnt/postgresql/weibo1.csv';

COPY2000

5、 copy命令匯入匯出資料為txt格式

 

1

2

3

4

postgresql=#   COPY tb2 TO '/mnt/postgresql/weibo.txt';

COPY2000

postgresql=#  COPY tb2 from '/mnt/postgresql/weibo.txt';

COPY2000

6、 copy命令匯出資料為壓縮檔案

1

2

postgresql=# COPY tb2 TOPROGRAM 'gzip >/mnt/postgresql/weibo.1000.gz';

COPY2000

7、 copy命令匯入匯出檔案為二進位制

用copyto命令以二進位制形式把tb2表的內容拷貝到binary檔案中

1

2

postgresql=# copy binary tb2 to'/mnt/postgresql/binary';

COPY 8000

用copyfrom命令把binary檔案中的資料拷貝到表從tb2中

1

2

postgresql=# copy binary tb2 from'/mnt/postgresql/binary';

COPY 8000

7、將excel表中的資料匯入到Postgresql資料庫的某張表中。

步驟:

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

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

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

1

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

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

注意事項:

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

1

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

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

1

ERROR:invalid bytesequence for encoding "UTF8"0xcdf5