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)
