pg_bulkload

pg_bulkload最大的优势就是速度,它可以跳过共享缓冲区和WAL记录。这意味着,如果出现错误,它是一个单独的恢复过程。
    ----from《数据架构师的postgresql修炼》P130 


WRITER|LOADER = DIRECT|BUFFERED|BINARY|PARALLEL
加载数据的方式,默认工作方式是BUFFERED。
DIRECT:数据直接写入表,这种方式绕过共享内存,不写日志,但是需要使用pg_bulkload自带的恢复程序。pg_bulkload安装完成后,在bin目录下产生一个postgresql的命令,这个命令用来启动或者关闭PostgreSQL服务器,它是pg_ctl的封装,postgresql自动调用pg_bulkload的恢复程序。如果使用DIERECT模式,建议使用postgresql命令启动关闭数据库,使用这个命令前需要把数据库安装目录/bin导入到环境变量PATH中,启动或者关闭数据库的方式与pg_ctl一样:
启动数据库: ./postgresql –D ../data start 
关闭数据库: ./postgresql –D ../data stop 
BUFFERED:通过共享内存加载数据,写日志,利用PostgreSQL自身的恢复程序。
BINARY:将CSV格式的文件转换成binary格式文件,这种模式只能输出到文件,OUTPUT需指定文件的路径,转换的工作由pg_bulkload完成。这种格式的转换,用户需要在控制文件里指定每一列的数据类型,书写的格式如下:
OUT_COL = type[(size)] [NULLIF{‘null_string’|null_hex}]。如果将这个转换后的二进制文件当做数据源导入数据表,在控制文件里还要标记每列的数据类型,写法如下:
COL = type[(size)] [NULLIF{‘null_string’|null_hex}]。
PARALLEL:与WRITER=DIRECT MULTI_PROCESS=YES效果一样,如果指定了PARALLEL,MULTI_PROCESS可以忽略。




编写调用的控制文件:
$ more /tmp/file.ctl
TYPE = CSV
INPUT = /tmp/file.csv
DELIMITEER = "     "     -->声明分隔符
TABLE = myt
LOGFILE = /tmp/blk.log
PARSE_BADFILE = /tmp/parse.csv   -->用来写入所有加载失败的记录


调用方式:
$ pg_bulkload /tmp/file.ctl -d test


当我们想把几个表移动到另一个系统中,或者把主表从一个.csv文件移动到主表时,完全可以使用pg_bulkload。
但当我们想从数据库移动所有或相当多的数据结构(带或不带数据)或移动不带数据结构的全部数据时,就需要使用pg_dump命令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值