KingbaseES数据库bulkload快速导入导出数据
数据导入导出的基本用法,高性能方法
·
数据库版本:KingbaseES V008R006C008B0014
简介
sys_bulkload 是 kingbase 快速将 CSV 文件导入数据库的命令行工具,它支持串行和并行的方式,是目前导入数据最快的工具。
文章目录如下
1. 基础语法
1.1. 语法说明
sys_bulkload 有2种导入、导出数据的方式:
一、将配置文件存入某个文件直接使用
sys_bulkload -U 用户名 -d 库名 -p 端口号 [配置文件]
二、将所有参数写到同一命令行
sys_bulkload -U 用户名 -d 库名 -p 端口号 [配置参数xxx]
1.2. 参数选项
加载选项
-i <name>:导入时表示"文件路径",导出时表示"表名"
-O <name>:导入时表示"表名",导出时表示"文件路径"
-l <file>:输出的日志文件
-P <file>:记录无法正确解析的日志
-o <option>:命令行时使用配置文件中的参数
-E:设置输出的日志级别(默认:INFO):DEBUG/INFO/NOTICE/WARNING/ERROR/LOG/FATAL/PANIC
连接选项
-h:指定主机IP
-d:指定库名
-p:指定端口号
-U:指定用户名
-W:指定交互输入密码
1.3. 配置文件
必选参数
# 导入配置
WRITER = [BUFFERED | DIRECT] # 指定加载方式,DIRECT绕过redo日志,效率最高;BUFFERED通过共享缓冲区加载(默认)
TYPE = [CSV | TEXT | BINARY] # 指定导入的文本格式:csv、text、二进制格式
INPUT = [file_path] # 源格式,导入的源就是文件
OUTPUT = [table_name] # 目标格式,导入的目标就是某张表
LOGFILE = [log_file] # 记录日志的文件
# 导出配置
TYPE = DB # 导出的格式为DB
INPUT = [table_name] # 源格式,导出的源就是数据库
OUTPUT = [file_path] # 目标格式,导出的目标就是文件
LOGFILE = [log_file] # 记录日志的文件
WRITER = CSV_FILE # 以csv格式导出到文件中
可选参数
PROCESSOR_COUNT = [num] # 指定并行数(默认:1),根据cpu数设定,二进制格式不支持
SKIP_LAST_EMPTY_VALUE = [YES | NO] # 忽略最后一列分隔符(默认:NO),只对csv格式有效
DELIMITER = "," # 指定分隔符(默认:逗号)
SPECIFY_COLUMN = <col1>,<col2> # 指定导入的字段
SKIP = [num] # 导入时跳过多少行(默认:0),只对csv、text格式有效
TRUNCATE = [YES | NO] # 删除目标表中的数据(默认:NO),并行和导出不支持
LIMIT = [num] # 导入的最大行数(默认不限制),最大 (2^64)/2-1
PARSE_ERRORS = [num] # 运行出现错误的次数(默认:0),-1表示不限制
DUPLICATE_BADFILE = [file_path] # 无法导入的数据追加到指定文件
ENCODING = [encoding] # 指定输入数据的编码格式
2. 常见用法
在导入或导出数据前,需要连接ksql创建插件:
CREATE EXTENSION sys_bulkload;
2.1. 导入数据基本用法
一、将配置文件存入某个文件直接使用
编写文件 file.ctl,写入如下内容:
WRITER = BUFFERED # 加载方式
TYPE = CSV # csv格式文件
INPUT = /home/yt/file.csv # 源文件路径
OUTPUT = t1 # 表名
LOGFILE = ./t1.log # 日志路径
执行导入命令
sys_bulkload -U [用户名] -d [库名] -p [端口号] ./file.ctl
二、将所有参数写到同一命令行
sys_bulkload -U [用户名] -d [库名] -p [端口号] \
-O t1 \ # 表名
-i /home/yt/file.csv \ # 源文件
-o WRITER=BUFFERED \ # 加载格式
-o TYPE=CSV # 文件类型
- 注意:-o 后面的参数,等于符号不要带空格。比如 -o TYPE = CSV 会出错
2.2. 导出数据基本用法
一、将配置文件存入某个文件直接使用
编写文件 file.ctl,写入如下内容:
WRITER = CSV_FILE # 加载方式
TYPE = DB # 数据库格式
INPUT = t1 # 源表名
OUTPUT = /home/yt/file.csv # 导出文件
LOGFILE = ./t1.log # 日志路径
执行导出命令
sys_bulkload -U [用户名] -d [库名] -p [端口号] ./file.ctl
二、将所有参数写到同一命令行
sys_bulkload -U [用户名] -d [库名] -p [端口号] \
-O /home/yt/file.csv \ # 文件路径
-i t1 \ # 表名
-o WRITER=CSV_FILE \ # 加载格式
-o TYPE=DB # 文件类型
- 注意:-o 后面的参数,等于符号不要带空格。比如 -o TYPE = DB 会出错
2.3. 性能最快导入导出
提高导入导出的方式是使用并行,cpu有多少就使用多少并行:
PROCESSOR_COUNT = 并行数
导入导出都可使用并行提升性能,导入还可以使用DIRECT加载方式(绕过redo日志)性能更快。
导入示例:
PROCESSOR_COUNT = 8 # 使用8个并行
WRITER = DIRECT # 加载方式
TYPE = CSV # csv格式文件
INPUT = /home/yt/file.csv # 源文件路径
OUTPUT = t1 # 表名
LOGFILE = ./t1.log # 日志路径
导出示例:
PROCESSOR_COUNT = 8 # 使用8个并行
WRITER = CSV_FILE # 加载方式
TYPE = DB # 数据库格式
INPUT = t1 # 源表名
OUTPUT = /home/yt/file.csv # 导出文件
LOGFILE = ./t1.log # 日志路径
目录2.1基本用法方式导入1000w行数据(16s)
使用高性能导入1000w行(3s)
更多推荐
已为社区贡献4条内容
所有评论(0)