日期:2014-05-17  浏览次数:20411 次

1000万行数据,每行遍历一遍一个97万行的词典
如题,
一个1000万行的excel文件, 每一行都遍历一遍一个97万行的词典。
如果文件里的词在词典里,则剔除,否则,保留,最后重新生成一个excel文件。

btw,
我用perl处理了一天,实在是太太太特么慢了,不知用sql语句能否更快地处理?
excel并不复杂,只有三列,需要关注的只是第三列的词。

以csv格式文件举例:
文件内容:

"女鞋";"凉鞋_1";"乱世佳人"
"女鞋";"凉鞋_1";"经典传奇"
"女鞋";"凉鞋_1";"坦克世界官网"
"女鞋";"凉鞋_1";"李小璐"


词典:

360安全卫士下载
三国杀
4399小游戏大全
追鱼传奇
英雄联盟
qq飞车
3366小游戏
4399赛尔号
搜狗输入法下载
4399造梦西游3
陆贞传奇
360浏览器
5173
植物大战僵尸2
小游戏
梦幻西游
传奇私服
7k7k小游戏大全
英雄联盟官网
奥比岛


求高效的方法啊!
我觉得放在数据库里应该会很容易,但是我sql Server才是入门级, 不太懂。
求大神给讲个思路啊。
谢谢!

------解决方案--------------------
#1.用SQL SERVER导入数据向导,把1000万行的excel导入到SQL SERVER,假设表名叫:tableA
#2.用SQL SERVER导入数据向导, 把97万行的词典导入到SQL SERVER,假设表名叫:tableB
#3.给tableB创建索引,查出需要的数据。相关SQL如下:
CREATE TABLE tableA(col1 NVARCHAR(100), col2 NVARCHAR(100), col3 NVARCHAR(100))
INSERT INTO tableA(col1, col2, col3)
select '女鞋','凉鞋_1','乱世佳人' union all
select '女鞋','凉鞋_1','经典传奇' union all
select '女鞋','凉鞋_1','坦克世界官网' union all
select '女鞋','凉鞋_1','李小璐'

CREATE TABLE tableB(ch NVARCHAR(100))
INSERT tableB(ch)
select '360安全卫士下载' union all
select '三国杀' union all
select '4399小游戏大全' union all
select '追鱼传奇' union all
select '英雄联盟' union all
select 'qq飞车' union all
select '3366小游戏' union all
select '4399赛尔号' union all
select '搜狗输入法下载' union all
select '4399造梦西游3' union all
select '陆贞传奇' union all
select '360浏览器' union all
select '5173' union all
select '植物大战僵尸2' union all
select '小游戏' union all
select '梦幻西游' union all
select '传奇私服' union all
select '7k7k小游戏大全' union all
select '英雄联盟官网' union all
select '奥比岛' 

--SQL:
--创建索引
CREATE INDEX IX_tableB_ch ON dbo.tableB