0
A
回答
2
您无法直接使用存储过程。我建议在SQL Server Management Studio中右键单击数据库,然后选择“导出数据”。
为它提供一个查询或返回行的存储过程。告诉它你希望文件由逗号和用引号限定的文本分隔。
当向导询问您是要执行还是保存时,请将其保存到磁盘。
这使得所谓的SSIS包。然后,您可以使用Windows资源管理器来运行它,或者使用名为dtexec.exe的命令行程序来运行它,或者将它提供给DBA,让它们在SQL Server中运行它。
1
您可以通过exec调用BCP的xp_cmdshell 'BCP dbname..table出filename.bcp .....'
这是一个非常类似的问题,除了它的进口。 Use bcp to import csv file to sql 2005 or 2008
+0
我需要导出数据,而不是导入数据 – user146911 2010-06-02 02:03:11
1
这是可能做到,但你需要有足够的权利来运行xp_cmdshell和即席分布式查询。
sp_configure 'Show Advanced Options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO
sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO
DECLARE @OutputPath VARCHAR(1000)
SET @OutputPath = 'd:\temp\'
DECLARE @OutputFilename VARCHAR(1000)
DECLARE @ServerName VARCHAR(1000)
SET @ServerName='servername'
DECLARE @Username VARCHAR(50)
SET @Username = 'username'
DECLARE @Password VARCHAR(50)
SET @Password = 'password'
DECLARE @DatabaseName VARCHAR(50)
SET @DatabaseName = 'databasename'
DECLARE @Dsn VARCHAR(1000)
SET @Dsn = 'Server='[email protected]+';Database='[email protected]+';Uid='[email protected]+';Pwd='[email protected]+';'
DECLARE @StartProcedureTime DATETIME
DECLARE @EndProcedureTime DATETIME
DECLARE @TimeTaken INTEGER
DECLARE @QueryToRun VARCHAR(1000)
DECLARE @Query VARCHAR(1000)
DECLARE @result INT
SET @Query = 'mkdir "' + @OutputPath + @DatabaseName +'\"'
EXEC @result = [master]..xp_cmdshell @Query
DECLARE db_cursor CURSOR FOR
SELECT
T.[FileName] + '.csv' AS [FileName],
REPLACE(T.SqlToRun, '''', '''''') AS [SqlToRun]
FROM
(
SELECT 'sp_DataGenerator_AverageRatingAverage' AS [FileName], 'exec sp_DataGenerator_AverageRatingAverage 54' AS [SqlToRun]
UNION ALL
SELECT 'sp_DataGenerator_AverageRatingGood', 'exec sp_DataGenerator_AverageRatingGood ''01-01-2009'', ''01-01-2010'''
UNION ALL
SELECT 'sp_DataGenerator_AverageRatingBad', 'exec sp_DataGenerator_AverageRatingBad ''01-01-2009'', ''01-01-2010'''
) AS T
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @OutputFilename, @QueryToRun
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Query = 'bcp "SELECT * FROM OPENROWSET (''SQLOLEDB'','''[email protected]+''','''[email protected]+''') AS T" queryout '[email protected] + @DatabaseName + '\' + @OutputFilename +' -c -t, -r\n -U'[email protected]+' -P'[email protected]+' -S'[email protected] + ' > ' [email protected] + @DatabaseName + '\' + @OutputFilename +'.txt'
SET @StartProcedureTime = getdate() --take start time
EXEC @result = [master]..xp_cmdshell @Query
SET @EndProcedureTime = getdate() --take end time
SET @TimeTaken = DATEDIFF(millisecond, @StartProcedureTime, @EndProcedureTime) --take difference in milliseconds.
PRINT '"'[email protected] + '" took ' + str(@TimeTaken) + ' Milliseconds.'
FETCH NEXT FROM db_cursor INTO @OutputFilename, @QueryToRun
END
CLOSE db_cursor
DEALLOCATE db_cursor
go
sp_configure 'xp_cmdshell', 0
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 0
GO
RECONFIGURE
GO
sp_configure 'Show Advanced Options', 0
GO
RECONFIGURE
GO
相关问题
- 1. SQL Server 2008导入/导出数据
- 2. SQL Server 2008 Express SSRS:导出为CSV
- 3. 从SQL Server 2008数据库使用c导出excel表格
- 4. 是否可以从gml2格式导出Sql Server 2008的空间数据?
- 5. 如何导出SQL Server 2008数据库?
- 6. 导出SQL Server 2008 R2数据库
- 7. 将SQL Server数据导出为CSV
- 8. 数据导入SQL Server 2008
- 9. 使用SQL Server 2008将所有数据库数据导出为xml格式
- 10. 如何将数据库从SQL Server 2008导出到SQL Server 2005
- 11. 为SQL Server 2008免费模式导出?
- 12. 数据导出为CSV格式
- 13. SQL Server 2008中的CSV导入
- 14. 以CSV格式导出数据库是否保留其模式?
- 15. 根据过滤情况以csv格式导出数据
- 16. 从sql server中的表导出数据以访问?
- 17. SQL Server Management Studio 2012 - 从表格中导出/导入数据
- 18. 格式SYSDATETIMEOFFSET在SQL Server 2008
- 19. 在SQL Server 2008中导入XML数据
- 20. SQL Server 2008数据库发布向导
- 21. 使用PHP导出带有标题的SQL Server表格为CSV
- 22. 获取数据网格中的所有数据并以CSV格式导出
- 23. 春季3 - 以csv格式导出数据
- 24. SQL Server:导入和导出CSV
- 25. 如何以编程方式将数据从数据库导出为.csv格式?
- 26. SQL CSV导入/导出发布数据
- 27. 以特定格式导出到csv
- 28. 以指定格式导出到csv
- 29. 将数据库从SQL Server 2008 R2实例导出到SQL Express 2008
- 30. python csv - 导出数据和格式颜色,文本格式等
它是否必须是存储过程? – Randy 2010-06-02 01:44:53