我有一个.csv
文件,其中包含100个product_ids
的列表。我有一个SQL Server表(其中包括product_id
列(4000+ ids)和product_description
列。
我想要做的是获取.CSV
product_ids
列表并在表格上运行查询以返回相关product_description
的列表。
所以我的简单查询将是
select product_description
from tablename
where product-id = xxxxxxx.
但是如何将xxxxxx
作为列表提供(也许我只是用逗号分隔?)并将输出转储到另一个csv中。
答案 0 :(得分:0)
您不能只将CSV中的ID复制+粘贴到查询中吗?
SELECT
product_id
, product_description
FROM <table>
WHERE product_id in (<<list of values from CSV>>).
由于它们已经是CSV格式,因此它们应以逗号分隔,因此您可以轻松地将它们插入查询中(如果使用文本编辑器打开文件)。
或者,您可以从SQL执行所有操作,如下所示:
CREATE TABLE #TempTable (
ID integer
, col2 ..
, col3 ..
etc. )
GO
BULK INSERT #TempTable
FROM 'C:\..\file.csv'
WITH
(
FIRSTROW = 2, -- in case the first row contains headers (otherwise just remove this line)
FIELDTERMINATOR = ',', -- default CSV field delimiter
ROWTERMINATOR = '\n',
ERRORFILE = 'C:\CSVDATA\SchoolsErrorRows.csv',
TABLOCK
)
然后运行:
SELECT
product_id
, product_description
FROM <table>
WHERE product_id in (SELECT ID FROM #TempTable)
如果您想将此结果导出到另一个CSV,那么:
INSERT INTO OPENROWSET(
'Microsoft.ACE.OLEDB.12.0'
,'Text;Database=D:\;HDR=YES;FMT=Delimited'
,'SELECT
product_id
, product_description
FROM <table>
WHERE product_id in (SELECT ID FROM #TempTable)' )