Redshift - 在 where 子句中从 csv 传递值
Posted
技术标签:
【中文标题】Redshift - 在 where 子句中从 csv 传递值【英文标题】:Redshift - Passing values from a csv in a where clause 【发布时间】:2018-10-01 09:50:35 【问题描述】:我有一个包含 sale_ids 列表的 csv 文件(大约 10K 条目)。我想知道是否有办法将文件中的这些值作为 SQL 语句中 where 子句的一部分传递。
下面给出的是 SQL:
select s.sale_id,s.sale_date,prod.prod_name
from sales s, product prod
where s.prod_id = prod.id
and s.sale_id in (these are the IDs in the csv file)
csv 只有一列带有 sale_id
我正在尝试在 Redshift DB 上执行此操作。谢谢。
【问题讨论】:
您必须将此文件作为表复制到 Redshift,然后在子查询中引用它 【参考方案1】:您可以手动或以编程方式将所有值插入到 SQL 查询中,但 Amazon Redshift 中没有将 CSV 文件的内容插入到查询中的内置功能。
按照@AlexYes 的建议,您可以使用COPY
命令将该 CSV 文件加载到新表中,然后在查询中引用该表:
and s.sale_id in (SELECT thing FROM new_table)
【讨论】:
以上是关于Redshift - 在 where 子句中从 csv 传递值的主要内容,如果未能解决你的问题,请参考以下文章
即使使用 where 子句中使用的排序键,Redshift 也会执行全表扫描