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配置修改