• 加载数据列为空值时 format 取值为 3 和 5 的处理不同


    问题现象
    如下用例中,使用 format 3 正常加载,使用 format 5 报错。
    create table t1(a int,b timestamp NOT NULL DEFAULT CURRENT_TIMES
    TAMP ON UPDATE CURRENT_TIMESTAMP);
    # more t1.txt
    1,
    2,
    3,
    gbase> LOAD DATA INFILE 'ftp://root:111111@192.168.1.4//opt/t1.txt' I
    NTO TABLE test.t1 data_format 3 FIELDS TERMINATED BY ',' TA
    BLE_FIELDS 'a' ;
    Query OK, 3 rows affected (Elapsed: 00:00:00.08)
    Task 262179 finished, Loaded 3 records, Skipped 0 records
    gbase> LOAD DATA INFILE 'ftp://root:111111@192.168.1.4//opt/t1.txt' I
    NTO TABLE test.t1 data_format 5 FIELDS TERMINATED BY ',' TA
    BLE_FIELDS 'a' ;
    Query OK, 0 rows affected (Elapsed: 00:00:00.10)
    Task 262180 finished, Loaded 0 records, Skipped 3 records
    # more 262180_test_t1_n1_192.168.1.4_20180516203143.trc
    file_name | file_offset | record_len | column | reason
    ftp://root:******@192.168.1.4//opt/t1.txt|0|3|2|validate error
    ftp://root:******@192.168.1.4//opt/t1.txt|3|3|2|validate error
    ftp://root:******@192.168.1.4//opt/t1.txt|6|3|2|validate error
    原因分析
    这是 format 取值为 5 3 对于空值处理不一致的规则决定的,是符合预期的。
    数据文件中 timestamp 列数据为空。按照规则, format 5 对于空值入库数据为 null
    timestamp not null 约束,所以不能入库。 fortmat 3 对于空值的处理是先取 default
    值,所以行为不一样。
    format 取值为 5 数据中有空值时,入库数据为 null ,不是 default 值,设定 default
    值对加载结果没有影响。 format 取值为 3 数据中有空值时,如果有 default 值,入库
    数据为 default 值,否则入库为 null
    宽松模式处理规则与文本方式加载处理规则不一致的有:
    行分隔符、列分隔符、包围符仅支持单字符(单字节),指定多字符报错;
    数据中有空值时,入库数据为 null ,不是 default 值,设定 default 值对加载结果
    没有影响;
    支持超宽列自动截断;
    数据文件的包围符、列分隔符与设置的不一致,如果第一列为字符型,数据截
    断入库,后面的字段都为空值;如果第一列为数值型,则都为错误数据;
    指定 auto_fill_column ,在少列的时候自动补齐,无论列定义是否有 default 值,
    都会用 null 值补齐缺失列,而不是 default 值。
  • 相关阅读:
    PeopleCode中Date函数的用法
    【CV】第 4 章:图像深度学习
    入侵事件平均潜伏时间高达天
    【打卡】21天学习挑战赛—RK3399平台开发入门到精通-day8
    Docker学习教程
    ubuntu系统简单尝试
    JSD-2204-WebServer(项目终章)-Day18
    回顾本科毕设内容,用惯了PyTorch环境,结果用tensorflow环境一直出错,没错,本篇博客就是记录用tensorflow的错(自用!)
    C# GetMethod 方法应用实例
    怎么用vscode创建工程
  • 原文地址:https://blog.csdn.net/m0_49291452/article/details/126400521