0

感谢您查看此内容。对于我正在使用 MySql 进行的这个项目,我需要一些帮助。

对于项目的一部分,我需要将一些东西加载到我已经启动并运行的 MySql 数据库中。

对于表中的每一列,我需要的信息Documentation存储在我硬盘上的文本文件中。

例如,文档表中的一列是“端口”,所以我的计算机上有一个 ports.txt 文件,其中包含一堆端口号等等。

我试图通过 phpMyAdmin 运行这个 mysql 脚本

LOAD DATA INFILE 'C:\\ports.txt" INTO TABLE `Documentation`(`ports`). 

它运行成功,所以我去做了我需要的其他加载数据

LOAD DATA INFILE 'C:\\vlan.txt' INTO TABLE `Documentation` (`vlans`)

这也成功完成,但它在端口列的最后一个条目之后将所有行添加到 vlan 列。

为什么会这样?我能做些什么来解决这个问题吗?谢谢

4

1 回答 1

1

为什么会这样?

LOAD DATA向指定表中插入新行;它不会更新现有行。

我能做些什么来解决这个问题吗?

重要的是要了解 MySQL 不保证表将按任何特定顺序保存。因此,在您的第一个之后LOAD,插入数据的顺序可能会丢失和忘记 - 因此,通常会在导入之前关联此类数据(例如,作为单个 CSV 文件中相同记录的列)。

可以将 您的数据放入每个都有一列LOAD的临时表中,并希望这些自动递增的标识符在两个表之间保持对齐(MySQL 绝对不保证这一点,但在您的情况下,您应该发现每条记录从 1 开始按顺序编号); 在那里,您可以执行以下查询:AUTO_INCREMENT

INSERT INTO Documentation SELECT port, vlan FROM t_Ports JOIN t_Vlan USING (id);
于 2012-05-04T15:38:45.293 回答