2011-09-22 14 views
47

Potrzebuję utworzyć skrypt INSERT, aby wstawić do innej bazy danych te same dane.
Jeśli w SQL Server wybieram "Tabela skryptów jako> INSERT To", mogę łatwo odtworzyć szkielet dla instrukcji INSERT. Jednak ponieważ mam kilka rekordów do migracji, wolałbym nie wstawiać wartości ręcznie.Utwórz skrypt SQL INSERT z wartościami zebranymi z tabeli

Czy istnieje sposób na "automatyczne" pobranie skryptu INSERT z wypełnionymi wartościami (pochodzącymi z tabeli docelowej)?

Wiem, że można to zrobić za pomocą SSIS, ale zastanawiam się, czy byłoby to również możliwe dzięki szybszemu rozwiązaniu.

Odpowiedz

94

Możesz to zrobić z SSMS.

1 - Kliknij prawym przyciskiem myszy bazę danych w Eksploratorze obiektów.
2 - Wybierz Zadania/generowanie skryptów ...
3 - Na Ustaw opcje Skrypciarskiej strona, kliknij przycisk Zaawansowane i upewnij typów danych do skryptu jest ustawiony na dane tylko .

Wynikowy skrypt będzie mieć instrukcję USE DATABASE u góry. Zmień to na bazę danych, do której chcesz wstawić dane.

+4

FYI możesz wyłączyć komendę 'USE Database' w obszarze Narzędzia/Opcje/Eksplorator obiektów SQL Server/Skrypty/Opcje skryptów ogólnych/Skrypt USE

+0

Musisz także ręcznie usunąć kolumny tożsamości z wygenerowanego kodu T-SQL, jeśli używasz danych wyjściowych jako szablonu do wstawiania nowych rekordów lub ustaw IDENTITY_INSERT na. –

6

Użyj darmoSSMS tools pack to "generate insert statements"?

Albo w SSMS (nie ma go na tym komputerze, aby potwierdzić) czarodzieje eksportu pozwala na „dane script” zbyt

+0

Kreator eksportu pozwala mi wyeksportować dane, ale nie wyciąg z danymi. Ale +1 dla narzędzia wygląda bardzo dobrze! – Francesco

+0

@ Luca: narzędzie jest niezbędne! Sprawdź odpowiedź RedFiltera na temat kreatora SSMS. – gbn

+0

Zestaw narzędzi SSMS http://www.ssmstoolspack.com/ jest świetny! –

1

będzie to zależeć od rodzaju danych, dlatego trzeba warunkowo ująć wartości ciągu w cudzysłowach lub odlewane wartości numeryczne jako ciąg s. Należy również do czynienia z problemem znaków:

SELECT 'INSERT INTO dbo.DestinationTable(col1, col2, col3) 
    SELECT ' + CONVERT(VARCHAR(12), col1) + ',' 
     + '''' + REPLACE(col2, '''', '''''') + ''',' 
     + '''' + REPLACE(col3, '''', '''''') + ''';' 
    FROM dbo.SourceTable; 

Vyas ma pretty complex stored procedure do tego celu.

Oczywiście można to zrobić o wiele łatwiej po prostu mówiąc:

INSERT INTO OtherDatabase.dbo.DestinationTable(col1, col2, col3) 
    SELECT col1, col2, col3 FROM dbo.SourceTable; 

Innymi słowy, nie trzeba do „skrypt” wkładkę, można po prostu go uruchomić ...

+0

Drugie podejście byłoby bardzo proste, gdyby tylko nie było na zupełnie innym intranecie/serwerze bez zdalnego dostępu :-( – Francesco

+0

@ Lucca, w takim przypadku wyeksportuj plik i przynieś go z SSIS lub importerem Kreatora eksportu – HLGEM

+0

@HLGEM: Rozwiązanie dostarczone przez RedFilter jest zakończeniem tego, czego szukałem, ponieważ jest najbardziej bezpośrednie, ale dzięki za podpowiedź. – Francesco

Powiązane problemy