感谢您查看此内容。我需要一些帮助,我正在使用MySql进行这个项目。
对于项目的一部分,我需要将一些内容加载到我已启动并运行的MySql数据库中。
表Documentation
中每列所需的信息存储在硬盘上的文本文件中。
例如,文档表中的一列是“ports”,因此我的计算机上有一个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列。
为什么会这样?有什么办法可以解决这个问题吗?感谢
答案 0 :(得分:1)
为什么会这样?
LOAD DATA
将新行插入指定的表中;它不会更新现有行。
我能做些什么来解决这个问题吗?
重要的是要了解MySQL不保证表格将以任何特定顺序保存。因此,在您的第一个LOAD
之后,插入数据的顺序可能会丢失&遗忘 - 因此,人们通常会将之前之前的数据与导入它相关联(例如,作为单个CSV文件中同一记录的列)。
您可以 LOAD
将您的数据放入临时表中,每个表都有AUTO_INCREMENT
列,希望这些自动递增的标识符保持对齐这两个表(MySQL绝对不能保证这一点,但在你的情况下你应该发现每个记录从1开始顺序编号);在那里,您可以按以下方式执行查询:
INSERT INTO Documentation SELECT port, vlan FROM t_Ports JOIN t_Vlan USING (id);