Verileri SQL Server'da INSERT INTO olarak dışa aktarma


413

SQL Server 2008 Management Studio kullanıyorum ve farklı bir db sunucusuna geçirmek istediğim bir tablo var.

SQL komut dosyasına bir ekleme olarak veri vermek için herhangi bir seçenek var mı ??

Yanıtlar:


682

Nesne Gezgini'ndeki SSMS'de veritabanına sağ tıklayın, sağ tıklayın ve "Görevler" i ve ardından "Komut Dosyaları Oluştur" u seçin.

Bu, tek veya tüm tablolar için komut dosyaları oluşturmanıza olanak tanır ve seçeneklerden biri "Kod Verileri" dir. Bunu DOĞRU olarak ayarlarsanız, sihirbaz verileriniz için INSERT INTO () ifadesine sahip bir komut dosyası oluşturur.

2008 R2 veya 2012 kullanılıyorsa buna başka bir şey denirse, bunun altındaki ekran görüntüsüne bakın

alternatif metin

2008 R2 veya üstü örn. 2012

"Yalnızca Veri", "Şema ve Veri" veya "Yalnızca Şema" olabilen "Komut Dosyasına Veri Türleri" ni seçin - varsayılan).

resim açıklamasını buraya girin

Ve hemen hemen aynı işlevselliği ve birkaçını (hızlı bulma gibi) vaat eden bir " SSMS Eklentisi " Paketi var (kaynak dahil).

alternatif metin


Eklentiyi Codeplex'ten yeni yükledim. Güzel. Bilgi için teşekkürler.
Rob Garrison

1
SMSS Add In 2008'de benim için çalıştı. Data Scripter Add In olmadı.
Phil Hale

5
2008 R2'de "Komut Dosyasına Veri Türleri" seçeneği "Komut Dosyası Seçeneklerini Ayarla" ekranında bulunabilir. Orada "Gelişmiş" düğmesine basın.
raymi

3
Bu eklentiler 2008 R2'de çalışıyor mu? SSMS Addin yükte bir istisna atıyor.
jocull


117

Aşırı müstehcenlik uğruna, marc_s'ın buradaki talimatlarını izledikten sonra ...

Nesne Gezgini'nde SSMS'de, veritabanına sağ tıklayın ve "Görevler" i ve ardından "Komut Dosyaları Oluştur" u seçin.

... Daha sonra altta bulunan önceki, sonraki, sonlandır, iptal düğmelerini içeren " Giriş, Nesneleri Seç, Komut Dosyası Seçeneklerini Ayarla, Özet ve Komut Dosyalarını Kaydet veya Yayınla " ile bir sihirbaz ekranı görüyorum .

On Set Komut Dosyası Seçenekleri adım , etmelisin "Gelişmiş" tıklayın seçenekleri ile sayfayı almak. Daha sonra Ghlouw'un belirttiği gibi, şimdi "Komut dosyası için veri türleri" ve karı seçersiniz.

gelişmiş düğme KIRMIZI IŞIK VAR! 1 !!


13
Teşekkürler, bu düğmenin çok sezgisel bir yerleşimi yoktur. Ben "Dosyaya kaydet" ait olduğunu varsayalım.
Karel Kral

48

SQLServer 2008R2 kullanıyorsanız komut dosyası veri türlerini ayarlamanız gerekir.

resim açıklamasını buraya girin


2
2012 için de geçerlidir.
OldCurmudgeon

1
2014 için de geçerlidir.
NucS

2
Benim gibi kafanız karıştıysa, "Komut dosyasına veri türleri" seçeneği yalnızca "Komut Dosyaları Oluştur ..." sihirbazının "Gelişmiş" seçeneklerinde görünür - ana seçenekler iletişim kutusunda bulamazsınız!
Etherman

36

SQL Server 2008 R2 çalıştırıyorsanız, yukarıda açıklanan marc_s olarak SSMS'de bunu yapmak için yerleşik seçenekler biraz değişti. Şemasında Script data = truegösterildiği gibi seçmek yerine , artık "Types of data to script""Tablo / Görünüm Seçenekleri" gruplamasının hemen üstünde yeni bir seçenek var . Burada yalnızca verileri, şema ve verileri veya yalnızca şemaları komut dosyası olarak seçebilirsiniz. Tıkır tıkır çalışıyor.



6

Bir komut satırı sürümü arayanlar için Microsoft bunu yapmak üzere serbest bırakıldımssql-scripter :

$ 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

Görünüşe göre mssql-scripter artık ölü bir proje.
Alex Suzuki

Doğru, geçen yıl hiçbir gelişme olmadı, ama benim için iyi çalışıyor.
Nickolay

3

2019'da daha yeni bir v18 kullanırken başkalarına yardımcı olmak için ekran görüntülerini güncellemem yeterli.

DB'yi sağ tıklatın: Görevler> Komut Dosyaları Oluştur

Burada belirli tabloları seçebilir veya hepsinin varsayılanı ile gidebilirsiniz.

Burada belirli tabloları seçebilir veya hepsinin varsayılanı ile gidebilirsiniz. Kendi ihtiyaçlarım için sadece bir tabloyu gösteriyorum.

Daha sonra, çıktı dosyası vb. Seçebileceğiniz "Komut Dosyası Seçenekleri" var. "Gelişmiş" düğmesinin altındadır. Kendi amaçlarım için sadece verilere ihtiyacım var.

Dosyaya çıktı dahil genel çıktı seçenekleri. Veriler dahil gelişmiş seçenekler!

Son olarak, yürütmeden önce bir inceleme özeti vardır. Bir rapor yürütüldükten sonra işlemlerin durumu gösterilir. Özeti gözden geçir.


2

Ayrıca, SQL Server Management Studio 2008 için "Data Scripter Eklentisi" ne de göz atabilirsiniz:

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


Özellikler listesi:

  • SSMS 2008'de geliştirilmiştir ve şu anda 2005 sürümünde desteklenmemektedir (yakında!)

  • Verileri MSSQL ve MySQL sözdizimi için hızlı bir şekilde T-SQL'e aktarın

  • CSV, TXT, XML de desteklenmektedir! SQL'in sunduğu tam potansiyeli, gücü ve hızı kullanın.

  • Access'in veya Excel'in birkaç dakika sürebilen komut dosyası çalışması yapmasını beklemeyin - SQL Server'ın sizin için yapmasına izin verin ve verilerinizi dışa aktarmak için tüm tahminde bulunun!

  • Hızlı yedekleme, DDL yönetimi ve daha fazlası için veri çıkışınızı özelleştirin ...

  • Tablo adlarını ve veritabanı şemalarını hızlı ve verimli bir şekilde ihtiyaçlarınıza göre değiştirin

  • Sütun adlarını dışa aktarın veya yalnızca adlar olmadan veri oluşturun.

  • Komut dosyası oluşturmak için ayrı ayrı sütunlar seçebilirsiniz.

  • Verilerin alt kümelerini seçebilirsiniz (WHERE yan tümcesi).

  • Verilerin sırasını seçebilirsiniz (ORDER BY yan tümcesi).

  • Veri manipülasyonu gerektiren bu eski veritabanı hata ayıklama işlemleri için harika bir yedekleme aracı. Deneme sırasında veri kaybetmeyin. Anında veri manipüle!


2

Yukarıdakilerin hepsi güzel, ama gerekiyorsa

  1. Birden çok görünümden ve birleştirilmiş tablolardan verileri dışa aktarma
  2. Farklı RDBMS'ler için ekleme ifadeleri oluşturma
  3. Herhangi bir RDBMS'den herhangi bir RDBMS'ye veri taşıma

o zaman aşağıdaki hile tek ve tek yoldur.

Önce kaynak db komut satırı istemcisinden biriktirme dosyaları oluşturmayı veya sonuç kümelerini dışa aktarmayı öğrenin. İkinci hedef db sql deyimlerini yürütmek öğrenmek.

Son olarak, kaynak veritabanı üzerinde bir sql betiği çalıştırarak hedef veritabanı için insert deyimleri (ve diğer deyimler) oluşturun. Örneğin

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;

Yukarıdaki örnek, tablo içermeyen seçimler için ikili kullanımın gerekli olduğu Oracle'ın db'si için oluşturulmuştur.

Sonuç kümesi hedef db için komut dosyası içerecektir.


1

Burada, kaynak tabloyu yinelemek için bir imleç kullanarak veri taşıma komut dosyası oluşturma örneği verilmiştir.

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'

0

Çok aradıktan sonra, bu benim en iyi çekimimdi:

Çok fazla veriye sahipseniz ve kompakt ve zarif bir komut dosyasına ihtiyacınız varsa deneyin: SSMS Tools Pack

Hedef tablolara öğe eklemek ve işlemleri oldukça iyi işlemek için tüm seçme ifadeleri birliği oluşturur.

Ekran görüntüsü

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.