一:测试前准备
数据库表设计:
CREATE TABLE `caps_name_test` (
`name` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`age` int DEFAULT NULL,
`money` double DEFAULT NULL,
`date` date DEFAULT NULL,
`boolean` tinyint DEFAULT NULL,
`time1` timestamp NULL DEFAULT NULL,
`decimal1` decimal(10,2) DEFAULT NULL,
`json1` json DEFAULT NULL,
`time2` datetime DEFAULT NULL,
UNIQUE KEY `un` (`name`,`age`) //这个手唯一索引的设置,测试时可以不用
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
dat文件:
NAMEAGEMONEYDATEBOOLEANTIME1DECIMAL1TIME2
111122023/11/15130/11/2023 00:00:0022.008/11/2023 00:00:00
212122023/11/18107/11/2023 00:00:0022.009/11/2023 00:00:00
解释:这里使用的测试数据是根据公司所提供的dat文件所写的测试案例,生产数据不方便透露,请谅解。
第一行:期望写入的字段,不是目的表的字段,这里读取的就是dat的字段 以两个“\u000f”做的分割符,稍后会在json文件里对分割符做出处理。
第二行及以后:数据,分割符不变,这里有时候没有数据,datax默认是以“\N”读取到为null,我这里是“”,稍后也会进行处理。
json文件:
{
"job":{
"content":[
{
"reader":{
"parameter":{
"path":[
"D:\\test\\datax\\GRNGBS_OAMS_CAPS_NAME_DX0_20230419.dat"
],#无数据处理
"nullFormat":"",
"column":[
{
"index":0,
"type":"String"
},
{
"index":2,
"type":"Long"
},
{
"index":4,
"type":"Double"
},
{
"format":"yyyy/MM/dd",
"index":6,
"type":"Date"
},
{
"index":8,
"type":"Long"
},
{
"format":"dd/MM/yyyy HH:mm:ss",
"index":10,
"type":"Date"
},
{
"index":12,
"type":"Double"
},
{
"index":14,
"type":"string"
},
{
"format":"dd/MM/yyyy HH:mm:ss",
"index":16,
"type":"Date"
}
],
"skipHeader":true,
"encoding":"UTF-8",#:分割符处理
"fieldDelimiter":"\u000F"
},
"name":"txtfilereader"
},
"writer":{
"parameter":{
"password":"你的数据库密码",
"session":[],
"column":[
"NAME",
"AGE",
"MONEY",
"DATE",
"BOOLEAN",
"TIME1",
"DECIMAL1",
"JSON1",
"TIME2"
],
"connection":[
{
"jdbcUrl":"你的数据库连接",
"table":[
"CAPS_NAME_TEST"
]
}
],
"writeMode":"insert",
"username":"你的数据名称",
"preSql":[
"delete from CAPS_NAME_TEST"
]
},
"name":"mysqlwriter"
}
}
],
"setting":{
"speed":{
"channel":1
}
}
}
}
二:期望数据
三:错误数据
示例:
dat文件:
json文件:
error:
我们可以看到这个几个标红的位置,因为我们在json文件里面配置了Date类型读取的format,那么当datax读取文件中的对应Date时候就会按照我们给出的格式读取,但是我们给出的dat文件和json配置的format格式不对应,所以出现了这个error。数据大家可以自行尝试,这次仅是举例说明。
四:修改后的数据
json:
log:
数据:
以上数据只是测试数据,小伙伴们可以自行测试。也是最近使用到datax这个异构数据源离线同步工具,也遇到了很多问题,如果这篇文章可以给小伙伴们带来帮助,不胜荣幸,对于这篇文章的纰漏也希望小伙伴们多多指正。