Eksport danych w SQL Server jako INSERT INTO

413

Korzystam z SQL Server 2008 Management Studio i mam tabelę, którą chcę migrować na inny serwer db.

Czy jest jakaś opcja eksportu danych jako wstawki do skryptu SQL?

Jack Kada
źródło

Odpowiedzi:

682

W SSMS w Object Explorer kliknij prawym przyciskiem myszy bazę danych, kliknij prawym przyciskiem myszy i wybierz „Zadania”, a następnie „Generuj skrypty”.

Umożliwi to generowanie skryptów dla jednej lub wszystkich tabel, a jedną z opcji jest „Dane skryptu”. Jeśli ustawisz na PRAWDA, kreator wygeneruje skrypt z instrukcją INSERT INTO () dla twoich danych.

Jeśli używasz 2008 R2 lub 2012, nazywa się to czymś innym, zobacz zrzut ekranu poniżej tego

alternatywny tekst

2008 R2 lub nowszy, np. 2012

Wybierz „Typy danych do skryptu”, które mogą być „Tylko dane”, „Schemat i dane” lub „Tylko schemat” - domyślnie).

wprowadź opis zdjęcia tutaj

A potem jest pakiet „ SSMS Addin ” na Codeplex (w tym źródła), który obiecuje prawie taką samą funkcjonalność i kilka innych (jak szybkie wyszukiwanie itp.)

alternatywny tekst

marc_s
źródło
Właśnie zainstalowałem dodatek z Codeplex. Miły. Dzięki za informację.
Rob Garrison
1
SMSS Add In działało dla mnie w 2008 roku. Data Scripter Add In nie działało.
Phil Hale,
5
W 2008 R2 opcję „Typy danych do skryptu” można znaleźć na ekranie „Ustaw opcje skryptu”. Naciśnij tam przycisk „Zaawansowane”.
raymi
3
Czy te dodatki działają w 2008 R2? Dodatek SSMS zgłasza wyjątek dotyczący obciążenia.
Wrzesień
2
Spójrz na odpowiedź @ruffin poniżej, aby uzyskać więcej zrzutów ekranu
Keith Sirmons,
117

Ze względu na nadmierną bezmyślność, po wykonaniu instrukcji marc_s tutaj ...

W SSMS w Object Explorer kliknij prawym przyciskiem myszy bazę danych, kliknij prawym przyciskiem myszy i wybierz „Zadania”, a następnie „Generuj skrypty”.

... Następnie widzę ekran kreatora z „ Wstępem, Wybierz obiekty, Ustaw opcje skryptów, Podsumowanie oraz Zapisz lub opublikuj skrypty ” z przyciskami poprzedni, następny, zakończ, anuluj.

Na etapie ustawić opcje skryptów , trzeba kliknąć przycisk „Zaawansowane” , aby dostać się na stronę z opcjami. Następnie, jak wspomniał Ghlouw , wybierasz teraz „Typy danych do skryptu” i zysk.

przycisk zaawansowany PODKREŚLONY NA CZERWONO! 1 !!

bułka z masłem
źródło
13
Dzięki, ten przycisk nie jest bardzo intuicyjny. Przypuszczam, że należy do „Zapisz do pliku”.
Karel Kral,
48

Jeśli go używasz SQLServer 2008R2, musisz ustawić Typ danych w polu skryptu.

wprowadź opis zdjęcia tutaj

Azadeh Khojandi
źródło
2
Dotyczy to również 2012 r.
OldCurmudgeon
1
Dotyczy również 2014 r.
NucS
2
Jeśli jesteś zdezorientowany tak jak ja, opcja „Typy danych do skryptu” jest widoczna tylko w opcjach „Zaawansowane” kreatora „Generuj skrypty ...” - nie znajdziesz jej w głównym oknie opcji!
Etherman,
36

Jeśli korzystasz z SQL Server 2008 R2, wbudowane opcje, aby to zrobić w SSMS, ponieważ marc_s opisane powyżej nieco się zmieniły. Zamiast wybierać, Script data = truejak pokazano na jego schemacie, istnieje teraz nowa opcja o nazwie "Types of data to script"tuż nad grupą „Opcje tabeli / widoku”. Tutaj możesz wybrać, aby skrypty dotyczyły tylko danych, schematu i danych lub tylko schematu. Działa jak marzenie.

Ghlouw
źródło
7

dla serwera SQl Mng Studio 2016:

wprowadź opis zdjęcia tutaj

ingconti
źródło
6

Dla tych, którzy szukają wersji wiersza polecenia, Microsoft wydałmssql-scripter to zrobić:

$ pip install mssql-scripter

# Generate DDL scripts for all database objects and DML scripts (INSERT statements)
# for all tables in the Adventureworks database and save the script files in
# the current directory
$ mssql-scripter -S localhost -d AdventureWorks -U sa --schema-and-data \
                 -f './' --file-per-object
Nickolay
źródło
Wygląda na to, że mssql-scripter jest już martwym projektem.
Alex Suzuki
To prawda, że ​​w zeszłym roku nie nastąpił żaden rozwój, ale działa dla mnie dobrze.
Nickolay
3

Właśnie aktualizuję zrzuty ekranu, aby pomóc innym, ponieważ korzystam z nowszej wersji 18, około 2019 r.

Kliknij prawym przyciskiem myszy DB: Zadania> Generuj skrypty

Tutaj możesz wybrać określone tabele lub przejść z domyślnym ustawieniem wszystkich.

Tutaj możesz wybrać określone tabele lub przejść z domyślnym ustawieniem wszystkich. Na własne potrzeby wskazuję tylko jeden stół.

Następnie są „Opcje skryptów”, w których można wybrać plik wyjściowy itp. Podobnie jak w wielu odpowiedziach powyżej (ponownie, odkurzam stare odpowiedzi dla nowszych wersji SQL Server Management Studio v18.4), czego naprawdę chcemy znajduje się pod przyciskiem „Zaawansowane”. Do własnych celów potrzebuję tylko danych.

Ogólne opcje wyjściowe, w tym dane wyjściowe do pliku. Zaawansowane opcje, w tym dane!

Wreszcie przed wykonaniem znajduje się podsumowanie recenzji. Po wykonaniu raportu pokazany jest status operacji. Podsumowanie przeglądu.

Neil Guy Lindberg
źródło
2

Możesz również sprawdzić „Dodatek do scriptera danych” dla SQL Server Management Studio 2008 z:

http://www.mssql-vehicle-data.com/SSMS


Ich lista funkcji:

  • Został on opracowany na SSMS 2008 i obecnie nie jest obsługiwany w wersji 2005 (wkrótce!)

  • Szybko eksportuj dane do T-SQL dla MSSQL i składni MySQL

  • Obsługiwane są również CSV, TXT, XML! Wykorzystaj pełny potencjał, moc i szybkość, jakie SQL ma do zaoferowania.

  • Nie czekaj, aż Access lub Excel wykonają dla Ciebie pracę skryptową, co może zająć kilka minut - pozwól SQL Server to zrobić za Ciebie i zgadnij, jak eksportować dane!

  • Dostosuj dane wyjściowe do szybkich kopii zapasowych, manipulacji DDL i innych ...

  • Zmień nazwy tabel i schematy baz danych na swoje potrzeby, szybko i skutecznie

  • Eksportuj nazwy kolumn lub po prostu generuj dane bez tych nazw.

  • Możesz wybrać poszczególne kolumny do skryptu.

  • Możesz wybrać podzestawy danych (klauzula WHERE).

  • Możesz wybrać porządkowanie danych (klauzula ORDER BY).

  • Świetne narzędzie do tworzenia kopii zapasowych dla tych nieczysty operacji debugowania bazy danych, które wymagają manipulacji danymi. Nie trać danych podczas eksperymentowania. Manipuluj danymi w locie!

Nate
źródło
2

Wszystko powyższe jest miłe, ale jeśli trzeba

  1. Eksportuj dane z wielu widoków i tabel z łączeniami
  2. Utwórz instrukcje wstawiania dla różnych RDBMS
  3. Przeprowadź migrację danych z dowolnego RDBMS do dowolnego RDBMS

to następująca sztuczka jest jedyną drogą.

Najpierw dowiedz się, jak tworzyć zbiory buforowe lub eksportować zestawy wyników ze źródłowego klienta wiersza komend db. Po drugie dowiedz się, jak wykonywać instrukcje SQL na docelowej bazie danych.

Na koniec utwórz instrukcje wstawiania (i wszelkie inne) dla docelowej bazy danych, uruchamiając skrypt sql w źródłowej bazie danych. na przykład

SELECT '-- SET the correct schema' FROM dual;
SELECT 'USE test;' FROM dual;
SELECT '-- DROP TABLE IF EXISTS' FROM dual;
SELECT 'IF OBJECT_ID(''table3'', ''U'') IS NOT NULL DROP TABLE dbo.table3;' FROM dual;
SELECT '-- create the table' FROM dual;
SELECT 'CREATE TABLE table3 (column1 VARCHAR(10), column2 VARCHAR(10));' FROM dual;

SELECT 'INSERT INTO table3 (column1, column2) VALUES (''', table1.column1, ''',''', table2.column2, ''');' FROM table1 JOIN table2 ON table2.COLUMN1 = table1.COLUMN1;

Powyższy przykład został utworzony dla bazy danych Oracle, w której użycie opcji dual jest konieczne w przypadku wyborów bez tabel.

Zestaw wyników będzie zawierał skrypt dla docelowej bazy danych.

Αλέκος
źródło
1

Oto przykład tworzenia skryptu migracji danych za pomocą kursora do iteracji tabeli źródłowej.

SET NOCOUNT ON;  
DECLARE @out nvarchar(max) = ''
DECLARE @row nvarchar(1024)
DECLARE @first int = 1

DECLARE cur CURSOR FOR 
    SELECT '(' + CONVERT(CHAR(1),[Stage]) + ',''' + [Label] + ''')'
    FROM CV_ORDER_STATUS
    ORDER BY [Stage]

PRINT 'SET IDENTITY_INSERT dbo.CV_ORDER_STATUS ON'
PRINT 'GO'

PRINT 'INSERT INTO dbo.CV_ORDER_STATUS ([Stage],[Label]) VALUES';

OPEN cur
FETCH NEXT FROM cur
    INTO @row

WHILE @@FETCH_STATUS = 0
BEGIN
    IF @first = 1
        SET @first = 0
    ELSE
        SET @out = @out + ',' + CHAR(13);

    SET @out = @out + @row

    FETCH NEXT FROM cur into @row
END

CLOSE cur
DEALLOCATE cur

PRINT @out

PRINT 'SET IDENTITY_INSERT dbo.CV_ORDER_STATUS OFF'
PRINT 'GO'
Shane
źródło
0

Po wielu poszukiwaniach był to mój najlepszy strzał:

Jeśli masz dużo danych i potrzebujesz kompaktowego i eleganckiego skryptu, wypróbuj: Pakiet narzędzi SSMS

Generuje sumę wszystkich instrukcji select, aby wstawiać elementy do tabel docelowych i całkiem dobrze obsługiwać transakcje.

Zrzut ekranu

Vinicius Gonçalves
źródło