LOAD DATA

    语句用于将数据批量加载到 TiDB 表中。

    LoadDataStmt:

    用户可以使用 LocalOpt 参数来指定导入的数据文件位于客户端或者服务端。目前 TiDB 只支持从客户端进行数据导入,因此在导入数据时 LocalOpt 应设置成 Local

    用户可以使用 FieldsLines 参数来指定如何处理数据格式,使用 FIELDS TERMINATED BY 来指定每个数据的分隔符号,使用 FIELDS ENCLOSED BY 来指定消除数据的包围符号。如果用户希望以某个字符为结尾切分每行数据,可以使用 LINES TERMINATED BY 来指定行的终止符。

    如果想分别提取 bob20street 1,可以指定数据的分隔符号为 ',',数据的包围符号为 '\"'。可以写成:

    1. FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'

    如果不指定处理数据的参数,将会按以下参数处理

    用户可以通过 IGNORE number LINES 参数来忽略文件开始的 number 行,例如可以使用 来忽略文件的首行。

    另外,TiDB 目前对参数 DuplicateOptCharsetOptLoadDataSetSpecOpt 仅支持语法解析。

    1. CREATE TABLE trips (
    2. -> duration integer not null,
    3. -> start_date datetime,
    4. -> end_date datetime,
    5. -> start_station_number integer,
    6. -> start_station varchar(255),
    7. -> end_station_number integer,
    8. -> end_station varchar(255),
    9. -> member_type varchar(255)
    10. -> );

    通过 LOAD DATA 导入数据,指定数据的分隔符为逗号,忽略包围数据的引号,并且忽略文件的第一行数据。

    1. LOAD DATA LOCAL INFILE '/mnt/evo970/data-sets/bikeshare-data/2017Q4-capitalbikeshare-tripdata.csv' INTO TABLE trips FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES (duration, start_date, end_date, start_station_number, start_station, end_station_number, end_station, bike_number, member_type);

    LOAD DATA 也支持使用十六进制 ASCII 字符表达式或二进制 ASCII 字符表达式作为 FIELDS ENCLOSED BYFIELDS TERMINATED BY 的参数。示例如下:

    1. LOAD DATA LOCAL INFILE '/mnt/evo970/data-sets/bikeshare-data/2017Q4-capitalbikeshare-tripdata.csv' INTO TABLE trips FIELDS TERMINATED BY x'2c' ENCLOSED BY b'100010' LINES TERMINATED BY '\r\n' IGNORE 1 LINES (duration, start_date, end_date, start_station_number, start_station, end_station_number, end_station, bike_number, member_type);

    以上示例中 x'2c' 是字符 , 的十六进制表示,b'100010' 是字符 " 的二进制表示。

    LOAD DATA 语句应该完全兼容 MySQL。若发现任何兼容性差异,请在 GitHub 上提 issue