sql >> Databasteknik >  >> RDS >> Sqlserver

Hur kan jag skapa ett INSERT-skript för en tabell med ett VARBINARY(MAX)-fält?

Om detta är en engångssak (eller sällan) att göra, kan du prova att skripta data från SSMS-guiden enligt beskrivningen här:

http:/ /sqlblog.com/blogs/eric_johnson/archive/2010/03/08/script-data-in-sql-server-2008.aspx

Eller, om du behöver göra detta ofta och vill automatisera det, kan du prova SQL# SQLCLR-bibliotek (som jag skrev och även om det mesta är gratis, är funktionen du behöver här inte). Funktionen för att göra detta är DB_DumpData och den genererar också INSERT uttalanden.

Men igen, om detta är en engångsuppgift eller en sällsynt uppgift, försök sedan med dataexportguiden som är inbyggd i Management Studio. Det bör tillåta dig att sedan skapa SQL-skriptet som du kan köra i produktion. Jag testade just detta i en tabell med en VARBINARY(MAX) fält som innehåller 3 365 964 byte data och guiden Generera skript genererade en INSERT uttalande med hela hexadecimalsträngen på 6,73 miljoner tecken för det värdet.

UPPDATERING:
Ett annat snabbt och enkelt sätt att göra detta på ett sätt som gör att du kan kopiera/klistra in hela INSERT-satsen i ett SQL-skript och inte behöva bry dig om BCP eller SSMS Export Wizard är att bara konvertera värdet till
kod>XML . Först skulle du KONVERTERA VARBINÄR till VARCHAR(MAX) med den valfria stilen "1" som ger dig en sexkantsträng som börjar med "0x". När du har den hexadecimala strängen för binära data kan du sammanfoga den till en INSERT uttalande och hela den saken, när den konverteras till XML , kan innehålla hela VARBINARY fält. Se följande exempel:

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. Sortera tabell med loop i MySQL med SELECT och UPDATE

  2. Sqlldr- Ingen terminator hittades efter avslutat och inneslutet fält

  3. Kan jag använda transaktionsliknande kapacitet i MySQL trigger

  4. Finns det ett snabbt sätt att kontrollera om NÅGON kolumn är NULL?