人大金仓数据库KingbaseES sys_bulkload

金仓数据库KingbaseES sys_bulkload

关键字:

sys_bulkload、人大金仓、KingbaseES、

sys_bulkload简介

sys_bulkload是kingbaseES提供的快速加载数据的命令行工具。用户使用sys_bulkload工具能够把一定格式的文本数据简单、快速的加载到KingbaseES数据库中,或将KingbaseES数据库中的数据快速导出到CSV文件中。使用前需要用户手动创建sys_bulkload插件。

2.sys_bulkload的使用

sys_bulkload [option] [control_file_path]

2.1 option参数

1.加载选项

(1)指定待加载文件或需要导出数据的表,同配置文件的INPUT选项。

-i in_file --input in_file

(2)快速加载的目标表或者接收导出数据的文件路径,同配置文件的OUTPUT选项。

-O output_table --output output_table

(3)结果日志路径,同配置文件中的LOGFILE选项。

-l log_file --logfile log_file

(4)记录无法正确解析或写失败的日志路径,同配置文件的PARSE_BADFILE选项。

-P bad_file --parse-badfile bad_file

(5)重建索引时与唯一性约束冲突而导入失败的记录的写入路径,同配置文件中的DUPLICATE_BADFILE选项。

-u duplicate_badfile --duplicate-badfile duplicate_badfile

(6)任何在配置文件中任何可使用的选项,参见 配置文件 。可以传入多次选项。对于加载的必填选项如input, output等,为指定参数的方便和简洁已在上面提供了单独长短项配置。

-o optional --option optional

2.连接选项

(1)指定连接的数据库。如未指定,数据库名将从环境变量KINGBASE_DATABASE中读取。如未设置该环境变量,使用连接的用户名。

-d dbname --dbname dbname

(2)指定运行服务器的主机名。如果值以/开始,被用作unix域套接字的目录。

-h host --host host

(3)指定TCP的端口号或者本地unix域套接字文件扩展名的服务器监听端口号。

-p port --port port

(4)指定连接的用户名。

-U username --username username

(5)连接用户的数据库登录密码。 需要说明的是-W 后面必须指定密码,否则会报错。

-W password --password password

3.一般选项

(1)输出发送给服务器的命令。

-e --echo

(2)设置输出信息的级别,其中级别包括:DEBUG, INFO, NOTICE, WARNING, ERROR, LOG, FATAL, and PANIC。默认为INFO。

-E --elevel

(3)输出帮助信息

--help

(4)输出版本号

--version

(5)指定配置文件的路径。配置文件写法参见配置文件

control_file_path参数

2.2使用说明

快速加载工具sys_bulkload可以通过短选项、长选项、配置文件三种方式来指定配置加载选项。由于加载的选项比较多,并且一些加载选项的信息比较固定和反复使用,可以把这些加载选项配置在配置文件中,直接指定配置文件的路径。配置加载选项规则如下:

  1. 启动参数的短选项和长选项是等价的。
  2. 在启动参数选项中仍然可以指定配置文件中配置的加载选项,其作用主要是临时替换配置文件的选项,以避免去修改配置文件中的选项,配置文件和启动参数同时指定则以启动参数指定为准。
  3. 如果使用启动参数则需要注意input,output,logfile,parse_badfile,duplicate_badfile不能多次指定,否则报错:specified only once。其他选项可以多次指定,并且以后指定的选项为准。

2.3配置文件

配置文件中包含了加载数据时所需要的一些配置。导入时只需要将配置文件的路径 + 文件名作为参数传入快速加载提供的系统函数或可执行程序即可。

  1. 配置文件中必填参数:

(1)加载的数据源的类型

TYPE = CSV | TEXT | BINARY | DB

●CSV: 从CSV格式的文本文件加载数据

●TEXT: 从TEXT格式的文本文件加载数据

●BINARY: 从二进制格式的文件加载数据

●DB: 从数据库的表中导出数据

(2)需要导入的数据库文件路径或者导出的数据的源表

INPUT = PATH | [schema_name.] table_name

●PATH:需要导入的数据源文件路径。如果是相对路径,在控制文件中指定时,它将与控制文件相同;当在命令行参数中指定时,相对于当前工作目录。KingbaseES服务器的用户必须具有该文件的读取权限。在“TYPE = CSV | TEXT | BINARY”时可用。

●[schema_name.] table_name:需要导出数据的表名。仅在“TYPE = DB”时可用。

OUTPUT = [schema_name.] table_name | PATH

●[schema_name.] table_name:导入数据的表名。在“ TYPE = CSV | TEXT | BINARY ”时可用。

●PATH:导出数据的文件路径。如果是相对路径,在控制文件中指定时,它将与控制文件相同;当在命令行参数中指定时,相对于当前工作目录。KingbaseES服务器的用户必须具有该文件的读取权限。仅在“TYPE = DB”时可用。

(3)LOGFILE = PATH: 指定一个文件记录日志。如果指定为相对路径,则指定规则与INPUT相同。

2.配置文件中非必填参数

(1)指定数据的加载方式,默认值是BUFFERED

WRITER = BUFFERED | CSV_FILE

●BUFFERED: 通过共享缓冲区将数据加载到表中。使用共享缓冲区编写WAL日志,并可使用KingbaseES的WAL日志进行恢复。

●CSV_FILE: 当数据的加载方式指定为CSV_FILE时,表示将数据库中的数据导出到CSV格式的文本文件中,该参数一般与“TYPE = DB”配合使用。

(2)LIMIT = n: LIMIT只在导入数据文件时有效,加载n行即停止加载。默认值为最大的64位整数(即(2^64)/2-1 = 9223372036854775807),当n为0或默认值时表示不限制加载行数。

(3)ENCODING = encoding:指定输入数据的编码格式,检查指定的编码格式是否合法。默认不检查。若有需要,转化输入文件的格式为数据库的编码格式。如果可以确保输入文件格式与数据库格式一致,不指定该选项,会有助于加载速度的提高,因为会忽略字符集的检查和转化。非不填参数还有其它的等等。

3.配置文件示例:

配置文件中的选项不区分大小写,每个选项占用一行,选项和选项值之间通过等号进行连接,选项的值可以有引号也可以没有引号。如果字符串中有空格、等号等特殊值,则必须加引号。可以通过在正文内容前加入“#”表示注释该行后面的配置。具体格式如下:

PROCESSOR_COUNT = 4

DELIMITER = "," # Delimiter

QUOTE = "\"" # Quoting character

LOGFILE = /home/bulkload.log

DUPLICATE_BADFIL = /home/bad.dat

TYPE = CSV

INPUT = /home/data.csv

OUTPUT = test_table

3.sys_bulkload的示例

1.使用配置文件导出数据示例:

(1)初始化mysql模式的数据库:

./initdb -U system -D data1 -A trust -m mysql

vim data1/kingbase.conf,在shared_preload_libraries中添加sys_bulkload

(2)创建sys_bulkload插件和表并插入数据

create extension sys_bulkload;

create table student (id int primary key, age int);

insert into student select id, (random()*100)::integer as age from generate_series(1,100000) as id;

(3)output.ctl

PROCESSOR_count=4

DELIMITER=","

LOGFILE=/home/zhangjing/B2/bin/output.log

TYPE=DB

INPUT=STUDENT

OUTPUT=/home/zhangjing/B2/bin/STUDENT.csv

WRITER=CSV_FILE

(4)执行导出命令

./sys_bulkload -U system -p 52323 -d test output.ctl

导出成功:

2.使用配置文件导入数据示例:

(1)创建导入数据库表:

create table student1 (id int primary key, age int);

(2)数据文件,将数据保存在STUDENT.CSV文件中,保存在数据库Bin目录:

(3)input.ctl配置文件信息:

PROCESSOR_count=4

DELIMITER=","

LOGFILE=/home/zhangjing/B2/bin/input.log

DELIMITER=","

TYPE=CSV

INPUT=/home/zhangjing/B2/bin/STUDENT.csv

OUTPUT=STUDENT1

(4)执行导入命令:

./sys_bulkload -U system -p 52323 -d test input.ctl

导入成功:

参考资料

《KingbaseES产品手册》

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值