sql >> Databáze >  >> RDS >> Sqlserver

Jak mohu vygenerovat skript INSERT pro tabulku s polem VARBINARY(MAX)?

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;


  1. jak uniknout oddělovači z obsahu sloupce při exportu csv

  2. Nahrajte více obrázků a uložte jejich cestu do databáze

  3. SQLite COUNT

  4. Zkontrolujte, zda tabulka MySQL existuje nebo ne