java从数据库导出语音文件_从数据库导出数据

此脚本将指定表中的行导出到任何表结构的INSERT语句 . 所以,你只需要复制结果并在SSMS的sql文件中运行它 -

DECLARE

@TableName SYSNAME

, @ObjectID INT

, @IsImportIdentity BIT = 1

DECLARE [tables] CURSOR READ_ONLY FAST_FORWARD LOCAL FOR

SELECT

'[' + s.name + '].[' + t.name + ']'

, t.[object_id]

FROM (

SELECT DISTINCT

t.[schema_id]

, t.[object_id]

, t.name

FROM sys.objects t WITH (NOWAIT)

JOIN sys.partitions p WITH (NOWAIT) ON p.[object_id] = t.[object_id]

WHERE p.[rows] > 0

AND t.[type] = 'U'

) t

JOIN sys.schemas s WITH (NOWAIT) ON t.[schema_id] = s.[schema_id]

WHERE t.name IN ('')

OPEN [tables]

FETCH NEXT FROM [tables] INTO

@TableName

, @ObjectID

DECLARE

@SQLInsert NVARCHAR(MAX)

, @SQLColumns NVARCHAR(MAX)

, @SQLTinyColumns NVARCHAR(MAX)

WHILE @@FETCH_STATUS = 0 BEGIN

SELECT

@SQLInsert = ''

, @SQLColumns = ''

, @SQLTinyColumns = ''

;WITH cols AS

(

SELECT

c.name

, datetype = t.name

, c.column_id

FROM sys.columns c WITH (NOWAIT)

JOIN sys.types t WITH (NOWAIT) ON c.system_type_id = t.system_type_id AND c.user_type_id = t.user_type_id

WHERE c.[object_id] = @ObjectID

AND (c.is_identity = 0 OR @IsImportIdentity = 1)

AND c.is_computed = 0

AND t.name NOT IN ('xml', 'geography', 'geometry', 'hierarchyid')

)

SELECT

@SQLInsert = 'INSERT INTO ' + @TableName + ' (' + STUFF((

SELECT ', [' + c.name + ']'

FROM cols c

ORDER BY c.column_id

FOR XML PATH, TYPE, ROOT).value('.', 'NVARCHAR(MAX)'), 1, 2, '') + ')'

, @SQLTinyColumns = STUFF((

SELECT ', ' + c.name

FROM cols c

ORDER BY c.column_id

FOR XML PATH, TYPE, ROOT).value('.', 'NVARCHAR(MAX)'), 1, 2, '')

, @SQLColumns = STUFF((SELECT CHAR(13) +

CASE

WHEN c.datetype = 'uniqueidentifier'

THEN ' + '', '' + ISNULL('''''''' + CAST([' + c.name + '] AS VARCHAR(MAX)) + '''''''', ''NULL'')'

WHEN c.datetype IN ('nvarchar', 'varchar', 'nchar', 'char', 'varbinary', 'binary')

THEN ' + '', '' + ISNULL('''''''' + CAST(REPLACE([' + c.name + '], '''''''', '''''''''''' ) AS NVARCHAR(MAX)) + '''''''', ''NULL'')'

WHEN c.datetype = 'datetime'

THEN ' + '', '' + ISNULL('''''''' + CONVERT(VARCHAR, [' + c.name + '], 120) + '''''''', ''NULL'')'

ELSE

' + '', '' + ISNULL(CAST([' + c.name + '] AS NVARCHAR(MAX)), ''NULL'')'

END

FROM cols c

ORDER BY c.column_id

FOR XML PATH, TYPE, ROOT).value('.', 'NVARCHAR(MAX)'), 1, 10, 'CHAR(13) + '', ('' +')

DECLARE @SQL NVARCHAR(MAX) = '

SET NOCOUNT ON;

DECLARE

@SQL NVARCHAR(MAX) = ''''

, @x INT = 1

, @count INT = (SELECT COUNT(1) FROM ' + @TableName + ')

IF EXISTS(

SELECT 1

FROM tempdb.dbo.sysobjects

WHERE ID = OBJECT_ID(''tempdb..#import'')

)

DROP TABLE #import;

SELECT ' + @SQLTinyColumns + ', ''RowNumber'' = ROW_NUMBER() OVER (ORDER BY ' + @SQLTinyColumns + ')

INTO #import

FROM ' + @TableName + '

WHILE @x < @count BEGIN

SELECT @SQL = ''VALUES '' + STUFF((

SELECT ' + @SQLColumns + ' + '')''' + '

FROM #import

WHERE RowNumber BETWEEN @x AND @x + 9

FOR XML PATH, TYPE, ROOT).value(''.'', ''NVARCHAR(MAX)''), 1, 2, CHAR(13) + '' '') + '';''

PRINT(''' + @SQLInsert + ''')

PRINT(@SQL)

SELECT @x = @x + 10

END'

EXEC sys.sp_executesql @SQL

FETCH NEXT FROM [tables] INTO

@TableName

, @ObjectID

END

CLOSE [tables]

DEALLOCATE [tables]

在输出中你得到这样的东西(AdventureWorks.Person.Address):

INSERT INTO [Person].[Address] ([AddressID], [AddressLine1], [AddressLine2], [City], [StateProvinceID], [PostalCode], [rowguid], [ModifiedDate])

VALUES

(1, '1970 Napa Ct.', NULL, 'Bothell', 79, '98011', '9AADCB0D-36CF-483F-84D8-585C2D4EC6E9', '2002-01-04 00:00:00')

, (2, '9833 Mt. Dias Blv.', NULL, 'Bothell', 79, '98011', '32A54B9E-E034-4BFB-B573-A71CDE60D8C0', '2003-01-01 00:00:00')

, (3, '7484 Roundtree Drive', NULL, 'Bothell', 79, '98011', '4C506923-6D1B-452C-A07C-BAA6F5B142A4', '2007-04-08 00:00:00')

, (4, '9539 Glenside Dr', NULL, 'Bothell', 79, '98011', 'E5946C78-4BCC-477F-9FA1-CC09DE16A880', '2003-03-07 00:00:00')

, (5, '1226 Shoe St.', NULL, 'Bothell', 79, '98011', 'FBAFF937-4A97-4AF0-81FD-B849900E9BB0', '2003-01-20 00:00:00')

, (6, '1399 Firestone Drive', NULL, 'Bothell', 79, '98011', 'FEBF8191-9804-44C8-877A-33FDE94F0075', '2003-03-17 00:00:00')

, (7, '5672 Hale Dr.', NULL, 'Bothell', 79, '98011', '0175A174-6C34-4D41-B3C1-4419CD6A0446', '2004-01-12 00:00:00')

, (8, '6387 Scenic Avenue', NULL, 'Bothell', 79, '98011', '3715E813-4DCA-49E0-8F1C-31857D21F269', '2003-01-18 00:00:00')

, (9, '8713 Yosemite Ct.', NULL, 'Bothell', 79, '98011', '268AF621-76D7-4C78-9441-144FD139821A', '2006-07-01 00:00:00')

, (10, '250 Race Court', NULL, 'Bothell', 79, '98011', '0B6B739D-8EB6-4378-8D55-FE196AF34C04', '2003-01-03 00:00:00');

UPDATE:

对于任何表结构,此脚本在输出窗口中将指定表中的行导出为CSV格式 .

DECLARE

@TableName SYSNAME

, @ObjectID INT

DECLARE [tables] CURSOR READ_ONLY FAST_FORWARD LOCAL FOR

SELECT

'[' + s.name + '].[' + t.name + ']'

, t.[object_id]

FROM (

SELECT DISTINCT

t.[schema_id]

, t.[object_id]

, t.name

FROM sys.objects t WITH (NOWAIT)

JOIN sys.partitions p WITH (NOWAIT) ON p.[object_id] = t.[object_id]

WHERE p.[rows] > 0

AND t.[type] = 'U'

) t

JOIN sys.schemas s WITH (NOWAIT) ON t.[schema_id] = s.[schema_id]

WHERE t.name IN ('')

OPEN [tables]

FETCH NEXT FROM [tables] INTO

@TableName

, @ObjectID

DECLARE

@SQLInsert NVARCHAR(MAX)

, @SQLColumns NVARCHAR(MAX)

, @SQLTinyColumns NVARCHAR(MAX)

WHILE @@FETCH_STATUS = 0 BEGIN

SELECT

@SQLInsert = ''

, @SQLColumns = ''

, @SQLTinyColumns = ''

;WITH cols AS

(

SELECT

c.name

, datetype = t.name

, c.column_id

FROM sys.columns c WITH (NOWAIT)

JOIN sys.types t WITH (NOWAIT) ON c.system_type_id = t.system_type_id AND c.user_type_id = t.user_type_id

WHERE c.[object_id] = @ObjectID

AND c.is_computed = 0

AND t.name NOT IN ('xml', 'geography', 'geometry', 'hierarchyid')

)

SELECT

@SQLTinyColumns = STUFF((

SELECT ', [' + c.name + ']'

FROM cols c

ORDER BY c.column_id

FOR XML PATH, TYPE, ROOT).value('.', 'NVARCHAR(MAX)'), 1, 2, '')

, @SQLColumns = STUFF((SELECT CHAR(13) +

CASE

WHEN c.datetype = 'uniqueidentifier'

THEN ' + '';'' + ISNULL('''' + CAST([' + c.name + '] AS VARCHAR(MAX)) + '''', ''NULL'')'

WHEN c.datetype IN ('nvarchar', 'varchar', 'nchar', 'char', 'varbinary', 'binary')

THEN ' + '';'' + ISNULL('''' + CAST(REPLACE([' + c.name + '], '''', '''''''') AS NVARCHAR(MAX)) + '''', ''NULL'')'

WHEN c.datetype = 'datetime'

THEN ' + '';'' + ISNULL('''' + CONVERT(VARCHAR, [' + c.name + '], 120) + '''', ''NULL'')'

ELSE

' + '';'' + ISNULL(CAST([' + c.name + '] AS NVARCHAR(MAX)), ''NULL'')'

END

FROM cols c

ORDER BY c.column_id

FOR XML PATH, TYPE, ROOT).value('.', 'NVARCHAR(MAX)'), 1, 10, 'CHAR(13) + '''' +')

DECLARE @SQL NVARCHAR(MAX) = '

SET NOCOUNT ON;

DECLARE

@SQL NVARCHAR(MAX) = ''''

, @x INT = 1

, @count INT = (SELECT COUNT(1) FROM ' + @TableName + ')

IF EXISTS(

SELECT 1

FROM tempdb.dbo.sysobjects

WHERE ID = OBJECT_ID(''tempdb..#import'')

)

DROP TABLE #import;

SELECT ' + @SQLTinyColumns + ', ''RowNumber'' = ROW_NUMBER() OVER (ORDER BY ' + @SQLTinyColumns + ')

INTO #import

FROM ' + @TableName + '

WHILE @x < @count BEGIN

SELECT @SQL = STUFF((

SELECT ' + @SQLColumns + ' + ''''' + '

FROM #import

WHERE RowNumber BETWEEN @x AND @x + 9

FOR XML PATH, TYPE, ROOT).value(''.'', ''NVARCHAR(MAX)''), 1, 1, '''')

PRINT(@SQL)

SELECT @x = @x + 10

END'

EXEC sys.sp_executesql @SQL

FETCH NEXT FROM [tables] INTO

@TableName

, @ObjectID

END

CLOSE [tables]

DEALLOCATE [tables]

在输出中你得到这样的东西(AdventureWorks.Person.Person):

1;EM;0;NULL;Ken;J;Sánchez;NULL;0;92C4279F-1207-48A3-8448-4636514EB7E2;2003-02-08 00:00:00

2;EM;0;NULL;Terri;Lee;Duffy;NULL;1;D8763459-8AA8-47CC-AFF7-C9079AF79033;2002-02-24 00:00:00

3;EM;0;NULL;Roberto;NULL;Tamburello;NULL;0;E1A2555E-0828-434B-A33B-6F38136A37DE;2001-12-05 00:00:00

4;EM;0;NULL;Rob;NULL;Walters;NULL;0;F2D7CE06-38B3-4357-805B-F4B6B71C01FF;2001-12-29 00:00:00

5;EM;0;Ms.;Gail;A;Erickson;NULL;0;F3A3F6B4-AE3B-430C-A754-9F2231BA6FEF;2002-01-30 00:00:00

6;EM;0;Mr.;Jossef;H;Goldberg;NULL;0;0DEA28FD-EFFE-482A-AFD3-B7E8F199D56F;2002-02-17 00:00:00

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值