Pokud je to jednorázová (nebo zřídka) věc, můžete zkusit skriptovat data z Průvodce SSMS, jak je popsáno zde:
http:/ /sqlblog.com/blogs/eric_johnson/archive/2010/03/08/script-data-in-sql-server-2008.aspx
Nebo, pokud to potřebujete dělat často a chcete to automatizovat, můžete zkusit SQL# Knihovna SQLCLR (kterou jsem napsal a zatímco většina z ní je zdarma, funkce, kterou zde potřebujete, není). Funkce k tomu je DB_DumpData a také generuje INSERT
prohlášení.
Ale znovu, pokud se jedná o jednorázový nebo občasný úkol, vyzkoušejte průvodce exportem dat, který je integrován do Management Studio. To by vám mělo umožnit vytvořit skript SQL, který můžete spustit v produkci. Právě jsem to testoval na tabulce s VARBINARY(MAX)
pole obsahující 3 365 964 bajtů dat a průvodce Generate Scripts vygeneroval INSERT
příkaz s celým hexadecimálním řetězcem 6,73 milionů znaků pro tuto jednu hodnotu.
AKTUALIZACE:
Další rychlý a snadný způsob, jak to udělat způsobem, který vám umožní zkopírovat/vložit celý příkaz INSERT do SQL skriptu a nemusíte se obtěžovat s BCP nebo SSMS Export Wizard, je pouze převést hodnotu na XML
. Nejprve byste CONVERT
VARBINARY
na VARCHAR(MAX)
pomocí volitelného stylu "1", který vám dává hexadecimální řetězec začínající "0x". Jakmile budete mít hex řetězec binárních dat, můžete je zřetězit do INSERT
příkaz a celou věc, když je převeden na XML
, může obsahovat celý VARBINARY
pole. Viz následující příklad:
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;