3.2.9 LOAD DATA

3.2.9.1 Syntax

LOAD DATA

[LOCAL]

INFILE 'file_name' INTO TABLE tbl_name

[CHARACTER SET charset_name]

[{FIELDS | COLUMNS}

[TERMINATED BY 'string']

[[OPTIONALLY] ENCLOSED BY 'char']

[ESCAPED BY 'char'] ]

[LINES [STARTING BY 'string']

[TERMINATED BY 'string'] ]

3.2.9.2 举例

load data infile 'data.txt' into table test_table CHARACTER SET 'utf8' FIELDS  TERMINATED by ',';

3.2.9.3 原理

dble解析MySQL协议之后,会根据数据路由拆分文件,每满足maxRowSizeToFile(可通过server.xml配置)就写到文件中,再通过 load data local infile 的方式导入到后端结点。
所以,这里local_infile这个参数会影响到load data的正确性.
可参考#1085

3.2.9.4 限制

  • 存在BUG导致在dble中CHARACTER SET charset_name必填
  • 在mysql中如果插入的数据不符合规范会插入部分数据,相对来说dble的load data对正确性有更高的要求,一个错误的发生会导致整体操作的回滚
  • 在ENCLOSED BY的时候存在BUG,使用的的时候会导致转义的数据无法被正确转义存储到数据库中
  • 由于当前解析设定的限制,loaddata默认每列最大字节数65535,可通过server.xml 中的maxCharsPerColumn配置修改
  • 使用load data导入数据时,若导入表是分片表,应保证导入文件中分片键数据符合分片规则的要求,否则dble将会报错.详细参考issue:https://github.com/actiontech/dble/issues/770
  • load data语句需要严格按照语法书写,由于druid解析器的缘故,若语法或关键字错误,druid会解析出错误的语句,从而导致结果错误.详细请参照issue:https://github.com/actiontech/dble/issues/1248

results matching ""

    No results matching ""