我正在开发一个Teradata系统,其中有一个表(TABLE_NAME),其中有一列email_address_table
。我有一张excel-sheet,其中有一列电子邮件地址。
我要做的是,检索表中的所有行,其中email_address_table
不是Excel工作表中存在的电子邮件地址的一部分。
据我所知,Teradata
不能直接使用excel表,所以我用Java编写代码,在那里我可以从列中检索单个电子邮件地址,甚至将它们格式化为String,我就是想直接在SQL查询中使用。因此,基本上,查询将在Java程序中根据我需要的语法进行整形。
输入:
+---------+----------+---------------------------------+
| id | name | Date |
+---------+----------+---------------------------------+
| 1 | abc@gmail.com | 21.03.2015 |
| 2 | def@gmail.com | 22.04.2015 |
| 3 | ajk@gmail.com | 22.03.2015 |
| 4 | ghi@gmail.com | 23.03.2015 |
| 5 | ghi@gmail.com | 23.03.2015 |
Excel表格:
+---------+-----------+
| name |
+---------+-----------+
| abc@gmail.com |
| ccc@gmail.com |
| ggg@gmail.com |
| hhh@gmail.com |
| ghi@gmail.com |
预期查询:
select * from TABLE_NAME where email_address does not match any in {"email1","email2","email3"...."email-n"}
此外,TABLE_NAME包含大约80,000个条目,excel表包含大约4000个电子邮件地址。这种搜索的最佳方式是什么?
如何解决此问题。我已经将excel表中的电子邮件作为普通字符串,我可以复制粘贴,直接在Java中更改格式。谢谢。
答案 0 :(得分:1)
SELECT * FROM table_name WHERE email_address NOT IN ('email1', 'email2', 'email3')