Skip to content

Latest commit

 

History

History
47 lines (29 loc) · 2.12 KB

3.2.09_LOAD_DATA.md

File metadata and controls

47 lines (29 loc) · 2.12 KB

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:actiontech/dble#770
  • load data语句需要严格按照语法书写,由于druid解析器的缘故,若语法或关键字错误,druid会解析出错误的语句,从而导致结果错误.详细请参照issue:actiontech/dble#1248
  • load data语句读字段的时候,如果遇到行结束符,会认为是本行结束了,需要注意:actiontech/dble#1507
  • load data中使用用户变量后,再次查询用户变量的值是不正确的,可参考issue:actiontech/dble#1761