将每个客户的订单导出到单独的 CSV 文件

Export each client's orders to separate CSV file

我有以下查询:

Select CustomerID, OrderName, OrderQuantity 
from Customers C join Orders O on C.CustomerID = O.CustomerID

结果:

CutomerID | OrderName | OrderQuantity
1001      | Chicken   | 2
1001      | Meat      | 5
1002      | Pepsi     | 13
1002      | 7Up       | 7

是否可以将每个客户行导出到单独的 CSV 文件?


所以 customer1001.csv 文件将有

CutomerID | OrderName | OrderQuantity
1001      | Chicken   | 2
1001      | Meat      | 5

customer1002.csv文件将有

CutomerID | OrderName | OrderQuantity
1002      | Pepsi     | 13
1002      | 7Up       | 7

你能试试这个吗?您应该更改查询中的数据库名称。

DECLARE CURS CURSOR FOR
Select C.CustomerID from Customers C join Orders O on C.CustomerID = O.CustomerID GROUP BY C.CustomerID

DECLARE @CustomerID INT
DECLARE @sqltext varchar(4000);

OPEN CURS
FETCH NEXT FROM CURS INTO @CustomerID

WHILE @@FETCH_STATUS = 0  
BEGIN 

SET @sqltext = 'bcp "Select CustomerID, OrderName, OrderQuantity from [DB].[dbo].Customers C join [DB].[dbo].Orders O on C.CustomerID = O.CustomerID WHERE C.CustomerID = ''' 
    + CONVERT(VARCHAR, @CustomerID) 
    + '''" queryout "D:\Test\customer' + CONVERT(VARCHAR, @CustomerID) + '.csv" -c -T -x -t,'

EXEC master..xp_cmdshell @sqltext

FETCH NEXT FROM CURS INTO @CustomerID
END
CLOSE CURS
DEALLOCATE CURS