首页 > 其他分享 >KingbaseES sys_bulkload数据加载工具错误处理

KingbaseES sys_bulkload数据加载工具错误处理

时间:2023-06-06 15:47:50浏览次数:40  
标签:03 CM 31 30 sys bulkload 错误处理 C0

一、关于sys_bulkload数据加载工具

sys_bulkload是KingbaseES提供的快速加载数据的命令行工具。用户使用sys_bulkload工具能够把一定格式的文本数据简单、快速的加载到KingbaseES数据库中,或将KingbaseES数据库中的数据快速导出到CSV文件中。使用前需要用户手动创建sys_bulkload插件,需要说明的是sys_bulkload工具是随数据库版本一同发布的,使用时请使用对应发布的数据库版本,其他数据版本则不保证能正常工作。

sys_bulkload使用请参考:

https://help.kingbase.com.cn/v8/admin/reference/ref-client/bulkload.html?highlight=sys_bulkload

二、使用sys_bulkload加载数据:

1. 导入命令:

sys_bulkload -i /home/webuer/F_CM.dat -O wzh.F_CM -l ./test_load.log -o "TYPE=TEXT" -H10.10.10.10 -Uwzh -Wwzh -dwzh

2. 错误信息:

sys_bulkload 3.1.15 on 2023-03-09 14:19:21.213938+08
INPUT = /home/webuser/F_CM.dat
LIMIT = INFINITE
PARSE_ERRORS = 0
CHECK_CONSTRAINTS = NO
TYPE = CSV
SKIP = 0 
DELIMITER = ,
QUOTE = "\""
ESCAPE = "\""
NULL =
SPECIFY_COLUMN = 
OUTPUT = wzh.f_cm
ASYNC_WRITE = NO
REINDEX = YES
VERBOSE = NO
WRITE = BUFFERED
DUPLICATE_ERRORS = 0 
ON_DUPLICATE_KEEP = NEW
TRUNCATE = NO

Parse eroor Record 1:Input Record 1:Rejected - column 1. missing data for column "farendma"
Maximum parse error count execeded - 1 error(s) found in input file

	0 Rows skipped.
	0 Rows successfully loaded.
	1 Rows not loaded due to parse errors.
	0 Rows not loaded due to dulicate errors.
	0 Rows replaced with new rows.

Run began on 2023-03-09 14:19:21.213938+08
Run ended on 2023-03-09 14:19:21.215044+08

CPU 0.00s/0.00u sec elapsed 0.00 sec
NOTICE: BULK LOAD END
		0 Rows skipped.
		0 Rows successfully loaded.
		1 Rows not loaded due to parse errors.
		0 Rows not loaded due to dulicate errors.
		0 Rows replaced with new rows.
		log path: /home/webuser/test_load.log
		parse srror path: /home/webuser/F_CM.bad
		duplicate error path: /home/webuser/F_CM.dupbad
		ctrl file path:
		data file path: /home/webuser/F_CM.bad
		Run began on 2023-03-09 14:19:21.213938+08
		Run ended on 2023-03-09 14:19:21.215044+08
WARNING: some rows were not loaded due to errors.

通过错误信息可以看到,在parse阶段就发生错误。

三、原因分析:

在parse节点数据发生解析错误,最大可能是数据分隔符识别有问题:

经沟通,原始数据是通过ociuldr工具进行导出,分隔符使用十六进制(0X03)进行数据分隔。

查看原数据:

1. linux系统:

$ cat F_CM.bad
2020-08-269779WD0005688022200001118022110001支付虚拟柜员666112018051680003509999999990000001200011121100012020051615111590451131
$ more F_CM.bad 
2020-08-269779WD0005688022200001118022110001支付虚拟柜员666112018051680003509999999990000001200011121100012020051615111590451131
$ less F_CM.bad
2020-08-26^C9779^CWD0005^C688022^C200001^C118022^C110001^C支付虚拟柜员^C6^C66^C^C1^C1^C20180516^C^C^C^C8^C0^C^C0^C^C^C0^C3^C5^C0^C999999999^C^C0^C^C^C0^C0^C^C^C0^C0^C^C^C0^C^C1^C^C2^C^C0^C^C^C001112^C110001^C20200516^C1511159045113^C1
$ vim F_CM.bad
2020-08-26^C9779^CWD0005^C688022^C200001^C118022^C110001^C支付虚拟柜员^C6^C66^C^C1^C1^C20180516^C^C^C^C8^C0^C^C0^C^C^C0^C3^C5^C0^C999999999^C^C0^C^C^C0^C0^C^C^C0^C0^C^C^C0^C^C1^C^C2^C^C0^C^C^C001112^C110001^C20200516^C1511159045113^C1

在服务器通过cat、more命令查看数据,cat、more命令会自动把乱码部分处理了,数据可以正常显示但是不能识别分隔符。

在服务器使用less、vim命令查看原数据文件,发现部分数据不能正常显示。

2. windows系统:

文本打开:

image-20230310153616902

nodepat++打开:

image-20230310153755351

至此,基本确定sys_bulkload工具不能正确识别分隔符导致解析错误。

四、解决问题:

既然分隔符使用十六进制(0x03)作为分隔符,可以尝试将原数据转换为十六进制查看。

1. 将原数据转换为十六进制:

$ hexdump -C F_CM.bad
00000000  ef bb bf 32 30 32 30 2d  30 38 2d 32 36 03 39 37  |...2020-08-26.97|
00000010  37 39 03 57 44 30 30 30  35 03 36 38 38 30 32 32  |79.WD0005.688022|
00000020  03 32 30 30 30 30 31 03  31 31 38 30 32 32 03 31  |.200001.118022.1|
00000030  31 30 30 30 31 03 e6 94  af e4 bb 98 e8 99 9a e6  |10001...........|
00000040  8b 9f e6 9f 9c e5 91 98  03 36 03 36 36 03 03 31  |.........6.66..1|
00000050  03 31 03 32 30 31 38 30  35 31 36 03 03 03 03 38  |.1.20180516....8|
00000060  03 30 03 03 30 03 03 03  30 03 33 03 35 03 30 03  |.0..0...0.3.5.0.|
00000070  39 39 39 39 39 39 39 39  39 03 03 30 03 03 03 30  |999999999..0...0|
00000080  03 30 03 03 03 30 03 30  03 03 03 30 03 03 31 03  |.0...0.0...0..1.|
00000090  03 32 03 03 30 03 03 03  30 30 31 31 31 32 03 31  |.2..0...001112.1|
000000a0  31 30 30 30 31 03 32 30  32 30 30 35 31 36 03 31  |10001.20200516.1|
000000b0  35 31 31 31 35 39 30 34  35 31 31 33 03 31 0a     |511159045113.1.|
000000bf

将原数据转换为十六进制后,数据显示正常,分隔符0x03也可以正常显示。

2. 替换原数据分隔符(0x03)为0x7c(|)分隔符:

sed替换分隔符:

sed -i  's/\x03/\x7c/g' F_CM.bad

查看文件:

$ cat F_CM.bad 
2020-08-26|9779|WD0005|688022|200001|118022|110001|支付虚拟柜员|6|66||1|1|20180516||||8|0||0|||0|3|5|0|999999999||0|||0|0|||0|0|||0||1||2||0|||001112|110001|20200516|1511159045113|1
$ more F_CM.bad 
2020-08-26|9779|WD0005|688022|200001|118022|110001|支付虚拟柜员|6|66||1|1|20180516||||8|0||0|||0|3|5|0|999999999||0|||0|0|||0|0|||0||1||2||0|||001112|110001|20200516|1511159045113|1
$ less F_CM.bad
2020-08-26|9779|WD0005|688022|200001|118022|110001|支付虚拟柜员|6|66||1|1|20180516||||8|0||0|||0|3|5|0|999999999||0|||0|0|||0|0|||0||1||2||0|||001112|110001|20200516|1511159045113|1
$ vim F_CM.bad
2020-08-26|9779|WD0005|688022|200001|118022|110001|支付虚拟柜员|6|66||1|1|20180516||||8|0||0|||0|3|5|0|999999999||0|||0|0|||0|0|||0||1||2||0|||001112|110001|20200516|1511159045113|1

替换完成后,数据、分隔符均可以正常显示。

再次使用sys_bulkload工具进行导入,可以正常导入。问题解决。

注意:sys_bulkload数据加载工具目前不支持十六进制分隔符

标签:03,CM,31,30,sys,bulkload,错误处理,C0
From: https://www.cnblogs.com/kingbase/p/17210635.html

相关文章

  • SystemVerilog for Design Edition 2 Chapter 7
    SystemVerilogforDesignEdition2Chapter7SystemVerilogaddsseveralnewoperatorsandproceduralstatementstotheVeriloglanguagethatallowmodelingmoreconcisesynthesizableRTLcode.Additionalenhancementsconveythedesigner’sintent,helping......
  • 极客大挑战2019EasySQL
     如果不输入 随便输入 由地址栏的check.php?username=sadsad&password=sadsad可以猜测sql语句:$sql="select*fromxxwhereusername='$name'andpassword='$password'";既然是考sql注入,先试试万能密码用户名:’or1#密码随意判断是否正确的sql语句可能为:$sql="sel......
  • .NET使用System.Speech轻松读取文本
    System.Speech是.NET框架的一部分,提供了语音识别和语音合成的功能。通过使用System.Speech命名空间中的类,开发人员可以在.NET应用程序中实现语音识别功能。在本文中,我将演示如何使用System.Speech.NET,这是开发语音应用程序比较牛逼的内库。它适用于.NET4.x和.NETCore以上版本......
  • spire.ocr 报错无法加载 DLL"spire_ocrsystem.dll"
    出现这个错误的时候,用以下2个步骤解决:第一,要检查类库的运行平台是否已经改成了x64,因为spire.ocr是基于64位平台的 第二,缺少VC运行库,安装VC运行库即可运行库的下载地址:https://pan.baidu.com/s/1lQwyqaS-Ba2ns0BRT5Z7Eg  提取码:wgja ......
  • systemctl mask 和 systemctl disable
    https://blog.csdn.net/qq_44370158/article/details/118178165?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-118178165-blog-104569146.235%5Ev36%5Epc_relevant_default_base3&depth_1-utm_sou......
  • systemctl mask 和 systemctl disable
    https://blog.csdn.net/qq_44370158/article/details/118178165?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-118178165-blog-104569146.235%5Ev36%5Epc_relevant_default_base3&depth_1-utm_sou......
  • [SUCTF 2019]EasySQL 1 做题笔记
     题目考察的是SQL注入,先找一些常用的SQL命令1.判断注入类型:简单的注入类型有字符型和数字型2.判断列数?id=1’orderby4#?id=1'unionselect1,2,3#3.判断库名?id=1'unionselect1,database(),3#4.判断表名?id=1'unionselect1,group_concat(table_name),3......
  • Sysmon 使用查询进程名称获取 DNS 查询日志==》看来早些版本是不支持溯源的!
    浏览器打开的域名: ss的请求:   svchost出去的也有:    系统更新,也是svchost发出去的:   ping的:    nslookup的,看不到:GG!!!    这是一个简单的“pinggoogle.com”命令,导致事件22记录在SysmonWindows事件日志中:它可以监视几乎任何支持网络的Windows客户端软件......
  • MSYS&MINGW环境中编译mediastream2和ortp
    (1)安装intltool访问http://ftp.acc.umu.se/pub/GNOME/binaries/win32/intltool/0.40/并下载intltool_0.40.4-1_win32.zip,解压到c:\msys目录下;[color=blue][注:这一步可以不需要][/color](2)安装linphone-deps:访问http://download.savannah.gnu.org/releases-noredirect/linp......
  • [极客大挑战 2019]EasySQL1 做题笔记
     看标题是EasySQL,简单SQL注入,想来不会特别难先尝试输入admin123456发现账号和密码都错误那就尝试传说中的万能密码 1'or'1'='1'# 输入的时候记得切换为英文输入法 出现flag......