我有一个14.7 GB的txt文件,包含4列和大约4.4亿行。我必须将它们添加到我的数据库中,但我想确保我没有重复项。
由于我有拉链码/城市/纬度/经度,我认为我只需要选择“不同的纬度和经度”,因为不能有2个相同纬度和长度的地方。
我想知道在将所有数据添加到数据库之前是否有一个简单的解决方案来进行此重复的搜索。
这个文件可以用来制作任何东西,所以我将它拆分为700MB的文件并使用:
LOAD DATA LOCAL INFILE '...\text6.txt' IGNORE
INTO TABLE zipCodes
FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n'
(zipCode, city, latitude, longitude);
将每个文件添加到数据库中。
现在问题是在我添加了大约80M行之后,如果我尝试在本地数据库上进行选择,那么我将花费很多时间来完成它并搜索重复项。
我该怎么办?我是这类工作的新手,需要尽可能快地学习。
答案 0 :(得分:2)
我会在LOAD FILE之前删除/禁用唯一索引,以便快速导入所有数据
完成原始导入后,通过
创建/激活一个新的唯一索引
ALTER IGNORE TABLE zipCodes ADD UNIQUE (latitude,longitude)
(*特定于mysql的扩展名)。
它将(静默地)从表中删除重复项,并且通常在索引处于活动状态时插入数据时不断更新索引的速度更快。