簡單的問題在這裏,我知道有很多缺憾的方式來做到這一點:)腳本Sql Server 2005/8中的單個表或所有表中的所有數據?
,但我希望一個SQL Server專家有一個腳本,腳本輕鬆所有的數據從一個表嗎?或者可能在數據庫中的所有表?
我厭倦了通過RDC複製和粘貼數據! :)
簡單的問題在這裏,我知道有很多缺憾的方式來做到這一點:)腳本Sql Server 2005/8中的單個表或所有表中的所有數據?
,但我希望一個SQL Server專家有一個腳本,腳本輕鬆所有的數據從一個表嗎?或者可能在數據庫中的所有表?
我厭倦了通過RDC複製和粘貼數據! :)
我也有類似需求。
要腳本爲表中的每一行插入語句。有時候我需要身份專欄,有時候我不需要。
所以,我寫了這個:
CREATE PROCEDURE [dbo].[GenerateInsertScripts] (
@tableName varchar(100),
@tableSchema varchar(50) = 'dbo',
@skipIdentity bit = 1
)
AS
BEGIN
DECLARE @columnName varchar(800)
DECLARE @columnType varchar(20)
DECLARE @statementA varchar(MAX)
DECLARE @statementB varchar(MAX)
DECLARE @statement nvarchar(MAX)
DECLARE @isIdentity bit
DECLARE @commaFlag bit
SET @statementA = 'INSERT INTO [' + @tableSchema + '].[' + @tableName + '] ('
SET @statementB = ''' + '
DECLARE cols CURSOR FOR
SELECT
COLUMN_NAME,
DATA_TYPE,
(SELECT COLUMNPROPERTY(OBJECT_ID('[' + @tableSchema + '].[' + @tableName + ']'),
information_schema.columns.COLUMN_NAME, 'IsIdentity')) AS IsIdentity
FROM
information_schema.columns
WHERE
TABLE_NAME = @tableName
AND
TABLE_SCHEMA = @tableSchema
ORDER BY
ORDINAL_POSITION
OPEN cols
FETCH cols INTO @columnName, @columnType, @isIdentity
SET @commaFlag = 0
WHILE @@FETCH_STATUS = 0
BEGIN
IF NOT (@isIdentity = 1 AND @skipIdentity = 1) BEGIN
IF @commaFlag = 1 BEGIN
SET @statementA = @statementA + ', '
SET @statementB = @statementB + ' + '', '' + '
END
SET @commaFlag = 1
SET @statementA = @statementA + '[' + @columnName + ']'
SET @statementB = @statementB + 'CASE WHEN [' + @columnName + '] IS NULL THEN ''NULL'' ELSE ' +
CASE
WHEN @columnType = 'bigint' OR @columnType = 'int' OR @columnType = 'tinyint' OR @columnType = 'bit' THEN
'CAST([' + @columnName + '] AS varchar(MAX))'
WHEN @columnType = 'datetime' THEN
''''''''' + CONVERT(varchar, [' + @columnName + '], 121) + '''''''''
ELSE
''''''''' + REPLACE(CAST([' + @columnName + '] AS varchar(MAX)), '''''''', '''''''''''') + '''''''''
END
+ ' END'
END
FETCH cols INTO @columnName, @columnType, @isIdentity
END
SET @commaFlag = 0
CLOSE cols
DEALLOCATE cols
SET @statementB = @statementB + ' + '''
SET @statement = 'SELECT ''' + @statementA + ') VALUES (' + @statementB + ')'' [Statement] FROM [' + @tableSchema + '].[' + @tableName + ']'
EXEC sp_executesql @statement
END
如果要將數據移動到不同的數據庫或某種文件,請使用SSIS。如果任務不復雜,請使用該向導,右鍵單擊datbasename,進入taks並選擇導出數據。
如果您正在執行整個數據庫,另一種方法是簡單地恢復其他位置的最新備份。
對於SQL Server 2008,你可以使用生成腳本嚮導Script Data
選項。但不是2005年。
您可以通過右鍵單擊SSMS中對象資源管理器中的數據庫啓動向導,然後Tasks
→Generate Scripts...
。
對於SQL Server 2005,您可以使用Microsoft提供的免費Database Publishing Wizard。
取決於他正在使用的環境,這可能是他移動數據的唯一方法。我必須使用下面的方法從GoDaddy的服務器獲取數據。 – 2009-06-05 17:48:56
KM,我同意,但約翰,是現貨。這是我可以輕鬆移動數據的唯一方法。 – CubanX 2009-06-05 17:57:41