摘要:無意中看到了一篇講數據批量導入的文章,才注意到的命令。的直接可以干這個事情,而且導出速度是非常快的。總結還有一些其他配置,比如把輸入輸出源指定成和命令,或者指定的等等。合理使用能大大提高效率。
TL;DR
無意中看到了一篇講 數據批量導入 的文章,才注意到 PostgreSQL 的 COPY 命令。簡而言之,它用來在文件和數據庫之間復制數據,效率非常高,并且支持 CSV 。
導出 CSV以前做類似的事情都是用程序語言寫,比如用程序讀取數據庫的數據,然后用 CSV 模塊寫入文件,當數據量大的時候還要控制不要一次讀太多,比如一次讀 5000 條,處理完再讀 5000 條之類。
PostgreSQL 的 COPY TO 直接可以干這個事情,而且導出速度是非常快的。下面例子是把 products 表導出成 CSV :
COPY products TO "/path/to/output.csv" WITH csv;
可以導出指定的屬性:
COPY products (name, price) TO "/path/to/output.csv" WITH csv;
也可以配合查詢語句,比如最常見的 SELECT :
COPY ( SELECT name, category_name FROM products LEFT JOIN categories ON categories.id = products.category_id ) TO "/path/to/output.csv" WITH csv;導入 CSV
跟上面的導出差不多,只是把 TO 換成 FROM ,舉例:
COPY products FROM "/path/to/input.csv" WITH csv;
這個命令做導入是非常高效的,在開頭那篇博客作者的測試中,COPY 只花了 INSERT 方案 1/3 的時間,而后者還用 prepare statement 優化過。
總結COPY 還有一些其他配置,比如把輸入輸出源指定成 STDIN/STDOUT 和 shell 命令,或者指定 CSV 的 header 等等。這里不再贅述。數據庫也有很多細節可挖,有些簡單卻非常實用。合理使用能大大提高效率。
參考資料Friends Don’t Let Friends Use Loops
PostgreSQL: COPY
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/17582.html
摘要:無意中看到了一篇講數據批量導入的文章,才注意到的命令。的直接可以干這個事情,而且導出速度是非常快的。總結還有一些其他配置,比如把輸入輸出源指定成和命令,或者指定的等等。合理使用能大大提高效率。 TL;DR 無意中看到了一篇講 數據批量導入 的文章,才注意到 PostgreSQL 的 COPY 命令。簡而言之,它用來在文件和數據庫之間復制數據,效率非常高,并且支持 CSV 。 導出 CS...
摘要:基本環境操作系統安裝安裝和安裝時序數據庫插件部署實踐時空數據庫德哥官網安裝文檔設置實驗下載測試數據創建數據庫解壓下載文件創建表結構導入數據查詢測試注釋數據庫啟動連接數據庫創 基本環境 操作系統: centOS 7 postGreSQL : 10 timescaleDB : 1.0 + postGreSQL安裝 Centos7 安裝Postgresql10.5和PostGIS times...
摘要:導入導出可以操作的是本地的服務器也可以是遠程的服務器所以都有如下通用選項主機端口用戶名密碼導出庫名表名列名查詢條件導出的文件名導出格式便于和傳統數據庫交換數據導出庫下面的表從哪里導出導出的文檔數導出庫下 導入/導出可以操作的是本地的mongodb服務器,也可以是遠程的服務器所以,都有如下通用選項: -h host 主機 --port port 端口 -u username 用...
閱讀 1056·2021-11-24 09:39
閱讀 3591·2021-11-22 13:54
閱讀 2547·2021-10-11 10:59
閱讀 784·2021-09-02 15:40
閱讀 1029·2019-08-30 15:55
閱讀 1051·2019-08-30 13:57
閱讀 2309·2019-08-30 13:17
閱讀 3028·2019-08-29 18:32