向PostgreSQL中載入資料的方法

2021-09-17 08:26:58 字數 2568 閱讀 2957

目錄

文件用途

詳細資訊

文件用途

本文介紹向postgresql中載入資料的幾種方法。

詳細資訊

copy用於在postgresql表和標準檔案系統檔案之間移動資料。copy to把乙個表的內容複製到乙個檔案,而copy from則從乙個檔案複製資料到乙個表(把資料追加到表中原有資料)。copy to也能複製乙個select查詢的結果。

帶乙個檔名的copy指示postgresql伺服器直接從乙個檔案讀取或者寫入到乙個檔案。該檔案必須是postgresql使用者(執行伺服器的使用者id)可訪問的並且應該以伺服器的視角來指定其名稱。當指定了program時,伺服器執行給定的命令並且從該程式的標準輸出讀取或者寫入到該程式的標準輸入。該程式必須以伺服器的視角指定,並且必須是postgresql使用者可執行的。copy命令包括多個可選的引數項,例如:

1)format選項選擇要讀取或者寫入的資料格式,可選擇的有text、csv(逗號分隔值)或者binary。預設值是text。

2)delimiter選項指定分隔檔案每行中各列的字元。文字格式中預設是乙個製表符,而csv格式中預設是乙個逗號。這必須是乙個單一的單位元組字元。使用binary格式時不允許使用這個選項。

3)header選項指定檔案包含標題行,其中有每一列的名稱。在輸出時,第一行包含來自表的列名。在輸入時,第一行會被忽略。只有在使用csv格式時才允許使用這個選項。

4)encoding選項指定檔案被以encoding_name編碼。如果省略這個選項,將使用當前的客戶端編碼。

此外,推薦在copy中使用的檔名總是通過乙個絕對路徑來指定。

舉例說明copy命令的使用方式,本例中完成的是將csv格式的檔案中的資料匯入到資料庫的表中:

首先在資料庫中建立一張表。

postgres=# create table douban(name text,author text,publisher text, rate numeric,comment text);

create table

然後使用copy命令匯入資料,分隔符為逗號,編碼為gb-18030。

postgres=# copy douban from '/home/kalath/doubantop250.csv' header csv delimiter ',' encoding 'gb-18030';

copy 250

檢視匯入的資料。

postgres=# select * from douban;

name           |           author             |             publisher                   | rate |                    comment

追風箏的人                     | [美] 卡勒德·胡賽尼          |  上海人民出版社                    |  8.9 | 為你,千千萬萬遍

解憂雜貨店                     | [日] 東野圭吾                 |  南海出版公司                        |  8.6 | 一碗精心熬製的東野牌雞湯,拒絕很

小王子                            | [法] 聖埃克蘇佩里            |  人民文學出版社                    |    9 | 獻給長成了大人的孩子們

白夜行                            | [日] 東野圭吾                  |  南海出版公司                        |  9.1 | 暗夜獨行的殘破靈魂,愛與惡本就難分難捨

圍城                               | 錢鍾書                             |  人民文學出版社                     |  8.9 | 對於「人艱不拆」四個字最徹底的違抗

挪威的森林                     | [日] 村上春樹                 |  上海譯文出版社                     |    8 | 村上之髮軔,多少人的青春啟蒙

三體                               | 劉慈欣                             |  重慶出版社                            |  8.8 | 你我不過都是蟲子

從伺服器的檔案系統將文件和影象載入到資料庫表中。這種方法同時使用copy from program(postgresql 9.3以上版本)和大物件支援。

如果想要在postgresql中儲存二進位制資料,例如儲存word、excel文件,檔案等,可以使用bytea型別的列。bytea型別是postgresql特有的儲存二進位制資料的字段型別,與sql標準中的blob和binary large object型別異曲同工。

在postgressql資料庫中,大物件(large object)被儲存在系統表pg_largeobject中,通過唯一識別符號oid來標識。使用者自定義表中,可以定義乙個oid型別的字段來鏈結pg_largeobject表中的大物件。

更多詳細資訊請登入【瀚高技術支援平台】檢視

Extjs4 向TreeStore中載入資料

這裡分別介紹使用json本地資料,jsp和xml向treestore中載入資料的實現方式 1.本地json資料 注意txt檔案中葉子節點一定要加上leaf true的屬性,否則檔案會無限展開的 var tree new ext.tree.treepanel root tree.render tree...

Apache中載入PHP,PHP中載入MySQL

apache安裝 php安裝 mysql安裝 1.開啟c software zdyhj apache24 conf httpd.conf,在loadmodule處加入 在apache中以module的方式載入php php7 module指php的版本號 loadmodule php7 module...

使用COPY命令在Vertica中載入資料

使用copy語句批量載入 copy語句是將大量資料載入到vertica資料庫中的最有效方式。您可以使用copy命令將乙個或多個檔案複製到群集主機上。對於批量載入,最有用的copy命令是 copy local 將資料檔案或所有指定的檔案從本地客戶端系統載入到伺服器處理檔案的vertica主機。在ver...