java和mysql加载数据infile误会

时间:2012-05-04 15:23:04

标签: mysql

感谢您查看此内容。我需要一些帮助,我正在使用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列。

为什么会这样?有什么办法可以解决这个问题吗?感谢

1 个答案:

答案 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);