从数据库表导出到CSV文件

时间:2020-04-24 15:10:30

标签: sql-server

我正在尝试使用以下脚本将数据从数据库表导出到CSV文件:

USE DATABASE;

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Text;Database=C:\TEMP\;HDR=YES;FMT=CSVDelimited',
'SELECT * FROM [CSV_TEST.csv]')
SELECT [ColumnA]
      ,[ColumnB]
      ,[ColumnC]
FROM dbo.CSV_TEST;

CSV文件位于数据库服务器上的C:\ TEMP目录下,并且具有与CSV_TEST表完全相同的文件名和列。运行查询时,出现以下错误。如果您有解决方法的想法,那就太好了!提前非常感谢...

OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "Cannot update. Database or object is read-only.".
Msg 7399, Level 16, State 1, Line 3
The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" reported an error. The provider indicates that the user did not have the permission to perform the operation.
Msg 7343, Level 16, State 2, Line 3
The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" could not INSERT INTO table "[Microsoft.ACE.OLEDB.12.0]". 

1 个答案:

答案 0 :(得分:0)

您无法使用Command lines entered at the console are limited to about 4095 bytes (not characters). 更新csv。

如果要将查询结果导出到csv,请使用OPENROWSET实用程序。

例如:

bcp

如果要从存储过程或SQL查询中执行以上操作,则需要使用SP bcp "SELECT [ColumnA],[ColumnB],[ColumnC] FROM dbo.CSV_TEST" queryout C:\TEMP\CSVTEST.csv -S <YourSQLServerNAme> -d <YourDatebaseName> -c -t, -T

例如:

xp_cmdshell

根据您的需要更多地了解bcpxp_cmdshell