我需要将一些非常大的文件(数百万条记录)加载到数据库中。它们的形式是:在MySQL中使用LOAD DATA INFILE过滤空或空输入
word1\tblahblahblah
word2\tblahblah
word3\tblahblah
word4
word5\tblahblah
...
我的问题是,我想忽略不具有第二记录(“blahblah的”),像word4行。
我目前使用下面的查询来加载文件:
LOAD DATA LOCAL INFILE 'file'
IGNORE INTO TABLE tablename
COLUMNS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
(col1, col2);
这有不同之处在于它仍然接受空值我想要的功能。有没有办法跳过word4类型的行,而不是将它们添加到数据库?
直觉上,我认为使用WHEN或WHERE子句是完美的,但是通过在线查看文档和其他信息,我找不到任何可以工作的示例。我是否被迫先过滤这些记录,或者我可以在这个查询中完成吗?
任何帮助grealy表示赞赏!
感谢乔丹,这是类似于我结束了使用的解决方案。这就是说,这也是我试图避免的(在将数据提供给LOAD DATA INFILE命令之前过滤数据),我想以某种方式将此过滤器合并到加载程序中。但是,如果在接下来的几天里我没有得到任何其他点击,我会将其标记为正确的,因为据我所知,这是处理此问题的最佳方法。 – Thomp
@Thomp:增加了一个替代解决方案,可以为你解决,看看上面。 –
我唯一担心的是第二种解决方案,那就是时间。它是否减缓了执行这些额外操作的负载?我想知道的最好方法是尝试两种实现方式并计时,但我已经在开发中取得了进展。也许当我得到一些空闲时间。无论如何,谢谢你的解决方案。第一个的变化结束了我的工作。 – Thomp