USE [master]
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0',
N'AllowInProcess', 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0',
N'DynamicParameters', 1
GO
sp_configure
sp_configure 'Ad Hoc Distributed Queries',1
sp_configure 'xp_cmdshell',1
RECONFIGURE
go
USE [RADHE SHYAM]
go
DECLARE @bcp_cmd1 VARCHAR(1000);
DECLARE @exe_path1 VARCHAR(200) =
' cd C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\ & ';
declare @name nvarchar(150)
declare ttables CURSOR FOR
SELECT NAME FROM SYS.TABLES ORDER BY NAME DESC
OPEN ttables
FETCH NEXT FROM ttables INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
print @name
SET @bcp_cmd1 = @exe_path1 +' BCP.EXE "SELECT * FROM [RADHE SHYAM].dbo.'
+ @name + '" queryout "D:\DATA\'
+ @name + '.CSV" -S VRINDAVANA\SQL2019 -w -T -t; ';
EXEC master..xp_cmdshell @bcp_cmd1;
FETCH NEXT FROM ttables INTO @name
END
CLOSE ttables
DEALLOCATE ttables
go
USE [RADHE SHYAM]
go
DECLARE @bcp_cmd1 VARCHAR(1000);
DECLARE @exe_path1 VARCHAR(200) =
' cd C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\ & ';
declare @name nvarchar(150)
declare ttables CURSOR FOR
SELECT NAME FROM SYS.TABLES ORDER BY NAME DESC
OPEN ttables
FETCH NEXT FROM ttables INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
print @name
SET @bcp_cmd1 = @exe_path1 +' BCP.EXE "SELECT * FROM [RADHE SHYAM].dbo.'
+ @name + '" queryout "D:\DATA\'
+ @name + '.CSV" -S VRINDAVANA\SQL2019 -w -T -t"\t" ';
EXEC master..xp_cmdshell @bcp_cmd1;
FETCH NEXT FROM ttables INTO @name
END
CLOSE ttables
DEALLOCATE ttables
--=================================
-- script to export all tables in a database
-- using bcp
-- tab delimited columns
-- include column names in the first row
-- deals with image and uniqueidentifiers data types
-- marcello miorelli v.20221020
--=================================
declare @name nvarchar(150)
declare @tschema nvarchar(150)
declare ttables CURSOR read_only fast_forward FOR
SELECT table_schema=schema_name(schema_id), NAME
FROM SYS.TABLES ORDER BY NAME DESC
OPEN ttables
FETCH NEXT FROM ttables INTO @tschema ,@name
WHILE @@FETCH_STATUS = 0
BEGIN
print @name
--------------------------------------------------------------------------------
IF object_id('tempdb..##Radhe_Shyam',N'U') IS NOT NULL
DROP TABLE ##Radhe_Shyam
DECLARE @table_schema nvarchar(108)=@tschema --table schema
DECLARE @table_name varchar(108)=@name--which needs to be exported
DECLARE @fileName varchar(1008)='RadheRadhe'
DECLARE @bcp_cmd1 VARCHAR(1000);
DECLARE @exe_path1 VARCHAR(200) = ' cd C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\ & ';
DECLARE @columnHeader VARCHAR(4000)
SELECT @columnHeader=NULL
SELECT @columnHeader = COALESCE(@columnHeader+',' ,'')
+ ''''+column_name +''''
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @table_name
AND TABLE_SCHEMA = @table_schema
DECLARE @ColumnList VARCHAR(max)
SELECT @ColumnList=NULL
SELECT @ColumnList = COALESCE(@ColumnList+',' ,'')
+ CASE WHEN r.data_type = 'image'
THEN 'CAST(CAST('+r.column_name +' AS varbinary(max))AS NVARCHAR(MAX))'
ELSE 'CAST('+r.column_name +' AS NVARCHAR(MAX))'
END
+ r.column_name
FROM INFORMATION_SCHEMA.COLUMNS r
WHERE r.TABLE_NAME = @table_name
AND r.TABLE_SCHEMA = @table_schema
DECLARE @tempRaw_sql nvarchar(max)
SELECT @tempRaw_sql = N'SELECT '
+ @ColumnList + N' into ##Radhe_Shyam FROM '
+ @table_schema + N'.' + @table_name
PRINT @tempRaw_sql
EXECUTE sp_executesql @tempRaw_sql
SELECT @fileName = @table_schema + '_' + @table_name
DECLARE @raw_sql nvarchar(max)
SELECT @raw_sql = 'SELECT '+ @columnHeader
+' UNION ALL SELECT * FROM ##Radhe_Shyam'
PRINT @raw_SQL
SET @bcp_cmd1 = @exe_path1 +' BCP.EXE ' + '"'
+ @raw_SQL + '"'
+ ' queryout "d:\data\'+ @fileName
+'.csv" -t"\t" -T -w -S '+ @@servername
print @bcp_cmd1
EXEC xp_cmdshell @bcp_cmd1
--------------------------------------------------------------------------------
FETCH NEXT FROM ttables INTO @tschema ,@name
END
CLOSE ttables
DEALLOCATE ttables
我用过 T-SQL。
我不生成制表符分隔的文件,而是生成 csv 文件。
在准备这项任务时:
C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\
- 不是您真正需要它,但我总是这样做``
注意与您的 sql server实例的连接
这就是我的服务器的调用方式:
``
表格:
剧本
输出
文件:
文件里面:
现在使用带有制表符分隔符的 bcp:
替换上面脚本中的以下行
和
获取制表符分隔符以分隔生成文件中的列。
这是新的制表符分隔的 csv 文件生成脚本:
以及生成的新文件的图片:
请注意,在 excel 中打开每个表字段时,都会进入不同的 excel 列,并且在文本文件中,
tab
字段之间有一个空格。除了我的其他答案,它工作正常但不包括标题。
这个可以。两者都使用BCP 实用程序。
它被包装在一个游标中,该游标读取当前数据库中的所有表。
它适用于
image
和uniqueidentifiers
数据类型。我已经在
msdb
数据库中对其进行了测试。我已经在几个数据库中测试了这个脚本,这些数据库中有大量的表和行。
在生成的文件中,它看起来像这样:
我有点恼火,我不知道为此内置了dbatools,但这应该可以帮到你:
如果您还没有 dbatools 模块,则需要安装并导入它。如果您使用的是 PowerShell 6 或 7,我建议您
-UseQuotes AsNeeded
选择Export-Csv
.