pg_bulkLoad批量入庫工具
工具說明
postgresql的官方導入csv等文件的工具
環境說明
centOS7.9(2009)
postgresql服務版本12.6(psql (PostgreSQL) 12.6)
工具使用(Linux)
安裝pg_bulkLoad:(pg_bulkload 3.1.18)
-
下載pg_bulkload-3.1.18-1.pg12.rhel8.x86_64.rpm
-
rpm -ivh pg_bulkload-3.1.18-1.pg12.rhel8.x86_64.rpm安裝
-
下載postgresql12.6源碼,編譯安裝
-
解壓源碼包后,進入解壓后的文件夾,執行 ./configure --prefix=/opt/postgresql
-
make && make install
-
下載pg_bulkload源碼(github提供)
-
編譯 && 安裝
1). 配置環境變量
pg_bulkload安裝需要pg_config,所以需要把postgresql的bin目錄導入PATH -->: export PATH=/opt/postgresql/bin:$PATH
2). 進入pg_bulkload源碼目錄
執行make USE_PGXS=1
進入pg_bulkload源碼目錄的子目錄bin,出現新編譯出來的pg_bulkLoad
執行make USE_PGXS=1 install
至此pg_bulkLoad編譯安裝完成
-
連接數據庫,建立pg_bulkLoad的extension
1). 連接數據庫
2). \c <數據庫名> 進入要使用的數據庫
3). create extension pg_bulkload;建立extension
-
利用pg_bulkLoad將csv文件導入數據庫
pg_bulkload -i <文件名> -O <關系表名> -l <日志文件目錄> -o "TYPE=CSV" -o "WRITER=PARALLEL" -d <數據庫名> -U <用戶名>
-
自動化導入,可用shell腳本或python腳本遍歷目錄
-
若不使用root用戶執行pg_bulkload,注意需要將pg_bulkload要操作(讀寫)的目錄加上所有用戶最大權限,避免出錯
實驗過程遇到問題
- 編譯pg_bulkload需要pg_config,一定要聲明環境變量才能編譯(編譯安裝pg_bulkload第一步);
- pg_bulkload和postgresql服務的版本需要匹配,若不匹配extension建立不成功
- 若不使用root用戶執行pg_bulkload,需要將pg_bulkload要操作(讀寫)的目錄加上所有用戶最大權限,否則(Permission denied)