You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用MySQL LOAD DATA加载无双引号的竖线分隔数据?

解决MySQL加载竖线分隔、仅referrer带双引号空值的数据问题

我来帮你搞定这个LOAD DATA的问题!你的数据是竖线|分隔,只有最后一个referrer字段可能出现""这种带双引号的空值,其他字段都没有引号,对吧?下面是完整的解决方案:

1. 先确认前置条件

首先要确保MySQL的local_infile功能是开启的,不然LOAD DATA LOCAL会报错:

  • 登录MySQL执行:SHOW VARIABLES LIKE 'local_infile';
  • 如果结果是OFF,执行:SET GLOBAL local_infile = 1;,然后重新连接数据库。

另外,你的MySQL账号需要有FILE权限,不然没法读取本地文件。

2. 完整的LOAD DATA命令

假设你的表结构和数据字段一一对应(shortUrl、url、date、ipAddr、userAgent、referrer),直接用这个命令:

mysql -h <host> -u <user> --password=<password> --local-infile <db_name> -e "
LOAD DATA LOCAL INFILE '/data/<file>.csv'
INTO TABLE <your_table_name>
FIELDS TERMINATED BY '|'
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
-- 如果你的CSV有表头行,就加上下面这行
-- IGNORE 1 LINES
(shortUrl, url, @raw_date, ipAddr, userAgent, referrer)
SET date = STR_TO_DATE(@raw_date, '%Y-%m-%dT%H:%i:%s.%fZ');
"

3. 关键参数解释

  • FIELDS TERMINATED BY '|':明确告诉MySQL字段之间用竖线分隔,完全匹配你的数据格式。
  • OPTIONALLY ENCLOSED BY '\"':这个是处理referrer字段的关键!它允许字段可选用双引号包裹——其他没有引号的字段会正常加载,而referrer的""会被自动解析为空字符串,完美适配你的数据情况。
  • LINES TERMINATED BY '\n':指定行之间用换行符分隔,如果你的文件是Windows生成的(换行符是\r\n),改成'\r\n'就行。
  • 日期转换部分:你的日期格式是2017-05-21T16:14:49.590Z,MySQL默认识别不了这种带T和Z的格式,所以先用用户变量@raw_date接收原始字符串,再用STR_TO_DATE转换成MySQL支持的DATETIME类型。

4. 额外注意事项

  • 如果你的CSV文件第一行是表头(比如字段名),一定要加上IGNORE 1 LINES跳过这一行,不然表头会被当成数据加载进去。
  • 测试的时候可以先拿几行数据生成一个小文件试加载,确认没问题再批量导入,避免出错后返工。

内容的提问来源于stack exchange,提问作者A B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:10:52