使用循环导出数据

时间:2019-05-24 14:31:52

标签: sql postgresql

我具有A,B和C类的数据。我需要将每个类分别导出到excel。到目前为止,我一直在运行Select * From foo WHERE class = 'A';,我将导出数据,然后将where语句更改为WHERE class = 'B',并对C进行相同的操作。

我是SQL的新手,我知道VBA风格的循环将无法工作。

有没有一种方法可以创建一个循环,该循环可以使用A类运行语句,导出数据,将类更改为B并重复?

1 个答案:

答案 0 :(得分:0)

Declare @class varchar(10);
DECLARE cur CURSOR READ_ONLY FOR 
SELECT -- your list of classes to loop through


OPEN cur

FETCH NEXT FROM cur INTO @class

WHILE @@FETCH_STATUS = 0 BEGIN

    --do your export

    SQLCMD -S SERVERNAME -E -Q "Select * From foo WHERE class = @class"
    -s "," -o "D:\MyData.csv" 

    FETCH NEXT FROM cur INTO  @class
END

CLOSE cur    
DEALLOCATE cur

或者您可以使用bcp方法在循环中将其导出到csv

bcp "SELECT blah blah blah" queryout "D:\MyTable.csv" -c -t , -S SERVERNAME -T