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

如何将TXT名单导入MySQL指定列并从ID1开始填充

解决LOAD DATA INFILE导入数据到指定行的问题

问题原因

你当前使用的LOAD DATA INFILE语句默认是向表中插入新记录,而非更新已有行。由于你的表id字段设置了AUTO_INCREMENT=7,新插入的数据会从ID7开始生成新行,不会覆盖ID1-6的name_eslang字段。

解决方案

要把文件中的值更新到ID1-6的已有行,需通过临时表中转后执行更新操作,具体步骤如下:

1. 创建临时表存储导入的名称

临时表用来记录导入的名称和对应顺序,方便后续匹配ID1、2、3...:

CREATE TEMPORARY TABLE temp_names (
  row_num INT AUTO_INCREMENT PRIMARY KEY,
  name_eslang VARCHAR(500)
);

2. 将name.txt导入临时表

用你原有的导入语句把文件内容导入临时表:

LOAD DATA INFILE 'name.txt' INTO TABLE temp_names
  FIELDS TERMINATED BY ''
  LINES TERMINATED BY '\r\n' (name_eslang);

3. 更新categories表的指定行

通过关联临时表的行号和categories的id,把名称对应更新到ID1、2、3、4(你的文件只有4个值,若后续补充到6个值,此语句会自动匹配ID1-6):

UPDATE categories c
JOIN temp_names t ON c.id = t.row_num
SET c.name_eslang = t.name_eslang;

4. 清理错误插入的行(可选)

如果不需要之前插入的ID7及以后的新行,可以删除它们:

DELETE FROM categories WHERE id >=7;

之后可重置自增序列(可选):

ALTER TABLE categories AUTO_INCREMENT =7;

备选方案(少量数据场景)

如果只有少量数据需要更新,也可以直接用UPDATE语句逐个指定ID更新:

UPDATE categories SET name_eslang = 'apple' WHERE id = 1;
UPDATE categories SET name_eslang = 'banana' WHERE id = 2;
UPDATE categories SET name_eslang = 'orange' WHERE id = 3;
UPDATE categories SET name_eslang = 'kiwi' WHERE id = 4;

内容的提问来源于stack exchange,提问作者Anonymous Girl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:35:21