sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan kan jeg generere et INSERT-script til en tabel med et VARBINARY(MAX)-felt?

Hvis dette er en enkelt (eller sjældent) ting at gøre, kan du prøve at scripte dataene ud fra SSMS-guiden som beskrevet her:

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

Eller, hvis du har brug for at gøre dette ofte og vil automatisere det, kan du prøve SQL# SQLCLR-bibliotek (som jeg skrev, og selvom det meste af det er gratis, er den funktion du har brug for her ikke). Funktionen til at gøre dette er DB_DumpData og det genererer også INSERT udsagn.

Men igen, hvis dette er en enkelt eller sjælden opgave, så prøv dataeksportguiden, der er indbygget i Management Studio. Det skulle give dig mulighed for derefter at oprette SQL-scriptet, som du kan køre i produktion. Jeg har lige testet dette på en tabel med en VARBINARY(MAX) felt, der indeholder 3.365.964 bytes data, og guiden Generer scripts genererede en INSERT sætning med hele hex-strengen på 6,73 millioner tegn for den ene værdi.

OPDATERING:
En anden hurtig og nem måde at gøre dette på på en måde, der giver dig mulighed for at kopiere / indsætte hele INSERT-sætningen i et SQL-script og ikke behøver at genere BCP eller SSMS Export Wizard, er blot at konvertere værdien til
kode>XML . Først skal du KONVERTERE VARBINARY til VARCHAR(MAX) ved at bruge den valgfrie stil "1", som giver dig en hex-streng, der starter med "0x". Når du har hex-strengen af ​​de binære data, kan du sammenkæde det til en INSERT sætning og hele den ting, når den konverteres til XML , kan indeholde hele VARBINARY Mark. Se følgende eksempel:

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. Sådan opretter du en omvendt ordnet variabel i min sql

  2. Sådan får du en liste over datoer mellem to datoer i mysql select-forespørgsel

  3. Hvordan undslipper man en regexp_replace i Oracle?

  4. Oracle Query giver fejl