如果这是一次性(或很少)要做的事情,您可以尝试从 SSMS 向导中编写数据脚本,如下所述:
http://sqlblog.com/blogs/eric_johnson/archive/2010/03/08/script-data-in-sql-server-2008.aspx http://sqlblog.com/blogs/eric_johnson/archive/2010/03/08/script-data-in-sql-server-2008.aspx
或者,如果您需要经常执行此操作并希望使其自动化,您可以尝试SQL# https://SQLsharp.com/?ref=so_5630309SQLCLR 库(我编写的,虽然其中大部分是免费的,但您需要的功能不是)。执行此操作的函数是DB_转储数据并且它还产生INSERT
声明。
但同样,如果这是一次性或不频繁的任务,请尝试 Management Studio 中内置的数据导出向导。这应该允许您创建可以在生产中运行的 SQL 脚本。我刚刚在桌子上测试了这个VARBINARY(MAX)
包含 3,365,964 字节数据的字段,生成脚本向导生成了一个INSERT
语句,该字符串包含该值的 673 万个字符的整个十六进制字符串。
UPDATE:
另一种快速简便的方法是,将值转换为XML
。首先你会CONVERT
the VARBINARY
to VARCHAR(MAX)
使用可选样式“1”,它为您提供以“0x”开头的十六进制字符串。一旦获得了二进制数据的十六进制字符串,您就可以将其连接成一个INSERT
语句和整个事情,当转换为XML
,可以包含整个VARBINARY
场地。请参见以下示例:
DECLARE @Binary VARBINARY(MAX) = CONVERT(VARBINARY(MAX),
REPLICATE(
CONVERT(NVARCHAR(MAX), 'test string'),
100000)
)
SELECT 'INSERT INTO dbo.TableName (ColumnName) VALUES ('+
CONVERT(VARCHAR(MAX), @Binary, 1) + ')' AS [Insert]
FOR XML RAW;