Datax使用 DataXException:Code[Common-01],Describe 同步数据出现业务脏数据,数据类型转换错误,Bytes类型不能转为Long

Datax使用(TDengine数据转移MySQL)

这几天一直在研究ETL工具,本次记录的是TDengine到MySQL时,遇到的一些坑点

操作记录

1、TDengine数据信息如下


             field              |         type         |   length    |   note   |
=================================================================================
 ts                             | TIMESTAMP            |           8 |          |
 log_value                      | VARCHAR              |         100 |          |
 is_monitor                     | TINYINT              |           1 |          |
 log_type                       | TINYINT              |           1 |          |
 identity                       | VARCHAR              |         100 |          |
 mode                           | TINYINT              |           1 |          |
 remark                         | NCHAR                |         500 |          |
 device_id                      | BIGINT               |           8 | TAG      |
 serial_number                  | VARCHAR              |          50 | TAG      |
 user_id                        | BIGINT               |           8 | TAG      |
 tenant_id                      | BIGINT               |           8 | TAG      |
 user_name                      | NCHAR                |         100 | TAG      |
 tenant_name                    | NCHAR                |         100 | TAG      |
 device_name                    | NCHAR                |         100 | TAG      |

2、创建sql表


下面开始在对应的mysql中创建出一个表来存储数据

image.pngimage-20230511170351187

3、编写执行的job.json

{
  "job": {
    "content": [
      {
        "reader": {
          "name": "tdengine30reader",
          "parameter": {
            "username": "****",
            "password": "****",
            "connection": [
              {
                "table": [
                  "device_log"
                ],
                "jdbcUrl": [
                  "jdbc:TAOS-RS://****:6041/***?charset=utf-8"
                ]
              }
            ],
            "column": [
              "ts",
              "log_value",
              "is_monitor",
              "log_type",
              "identity",
              "mode",
              "remark",
              "device_id",
              "serial_number",
              "user_id",
              "tenant_id",
              "user_name",
              "tenant_name",
              "device_name"
            ],
            "beginDateTime": "2023-04-13 18:36:16",
            "endDateTime": "2023-04-13 18:36:17"
          }
        },
        "writer": {
          "name": "mysqlwriter",
          "parameter": {
            "writeMode": "insert",
            "username": "****",
            "password": "****",
            "column": [
              "ts",
              "log_value",
              "is_monitor",
              "log_type",
              "identity",
              "mode",
              "remark",
              "device_id",
              "serial_number",
              "user_id",
              "tenant_id",
              "user_name",
              "tenant_name",
              "device_name"
            ],
            "session": [
              "set session sql_mode='ANSI'"
            ],
            "preSql": [
              "delete from device_log"
            ],
            "connection": [
              {
                "jdbcUrl": "jdbc:mysql://***:3306/test?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true",
                "table": [
                  "device_log"
                ]
              }
            ]
          }
        }
      }
    ],
    "setting": {
      "speed": {
        "channel": 1
      }
    }
  }
}

4、执行命令


python datax.py ../job/tdengine_mysql_job.json

二、在使用过程也遇到一些坑点,本节会介绍一下

  1. 在使用以上内容job.json不变的情况下,将数据库表的一些bigint字段改为tinyint,将其完全对应tdengine的数据类型时,执行脚本的时候会发生报错信息,报错信息如下。

f61a8822f77f79063762ff38ead6e8db.png
我大哥给我说是tdengine3的数据类型与mysql一样时,它的数据长度是可能不一样的,所以在数据库这边放大一些。
2. 在打包的过程中,最开始也是经常出现缺少plugin什么的,反正就是死活打不上,最后的解决办法是执行如下命令(maven)

 - mvn clean install -U  更新本地 Maven 存储库并尝试重复构建程序
 - mvn -U clean package assembly:assembly -Dmaven.test.skip=true   在项目的根目录执行,会生产一个target目录
 - python datax.py ../job/tdengine_mysql_job.json   进入到target/datax/datax/bin目录执行该命令,job.josn的位置根据自己的实际情况变更

以上便是本次使用时的错误记录和解决情况。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值