我需要T-SQL将数据导出到CSV(带标题)的最佳实践
我需要做的是使用T-SQL将数据导出到CSV文件。 我很困惑有很多方法可以做到这一点,我不知道选择哪一种,请帮我确认以下问题: 据我所知,大约有3种方法,我希望您帮助我确认: 使用Microsoft.Jet.OLEDB.4.0,如下所示: 但这需要csv文件在那里,并且带有标题 使用SQLCMD 命令行 使用BCP 使用union,获取数据及其列标题 这是我对T-SQL导出到CSV的所有理解,请帮助我确认 是否有其他方式导出到CSV我需要T-SQL将数据导出到CSV(带标题)的最佳实践,sql,tsql,csv,sqlcmd,sql-agent-job,Sql,Tsql,Csv,Sqlcmd,Sql Agent Job,我需要做的是使用T-SQL将数据导出到CSV文件。 我很困惑有很多方法可以做到这一点,我不知道选择哪一种,请帮我确认以下问题: 据我所知,大约有3种方法,我希望您帮助我确认: 使用Microsoft.Jet.OLEDB.4.0,如下所示: 但这需要csv文件在那里,并且带有标题 使用SQLCMD 命令行 使用BCP 使用union,获取数据及其列标题 这是我对T-SQL导出到CSV的所有理解,请帮助我确认 是否有其他方式导出到CSV 谢谢 可以使用联合创建标题行,如下所示: SELECT 'ob
谢谢 可以使用联合创建标题行,如下所示:
SELECT 'object_id', 'name'
UNION ALL
SELECT object_id, name
FROM sys.tables
在SQL Server中执行以下命令:
EXEC xp_cmdshell 'SQLCMD -S . -d MsVehicleReg2 -Q "SELECT * FROM tempViolationInfo" -s "," -o "O:\result.csv"';
以下是T-SQL方法:
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=D:\;HDR=YES;FMT=Delimited','SELECT * FROM [FileName.csv]')
SELECT Field1, Field2, Field3 FROM DatabaseName
但是,有几个警告:
- 在带有INSERT INTO OPENROWSET(…)的T-SQL中,从[MyTable]中选择*
- 执行BCP,无论是从作业步骤还是使用xp\u cmdshell在T-SQL中执行
- SSIS包
- PowerShell(来自作业步骤,在SQL Server 2008中+)或其他外部脚本/可执行文件
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=D:\;HDR=YES;FMT=Delimited','SELECT * FROM [FileName.csv]')
SELECT Field1, Field2, Field3 FROM DatabaseName