Übertragen Sie Daten von einer Datenbank in eine andere Datenbank

73

Wie kann man die Daten aus einer Datenbank abrufen und in eine andere Datenbanktabelle einfügen? Ich kann das nicht machen. Bitte helfen Sie mir bei der Übertragung von Daten von einem zum anderen.

Bharathi
quelle
12
Viele Möglichkeiten, dies zu tun. Was sind Ihre Anforderungen? "Ich kann das nicht machen." Was hast du versucht? Welchen Fehler sehen Sie?
Jamie F
15
Die Struktur der Frage lässt etwas klar, dass der Autor völlig verloren ist. Sie können ihn natürlich beurteilen, indem Sie seine Reise hierher beginnen. Ich würde nur eine Antwort schreiben.
Andras Gyomrey

Antworten:

115

Es gibt verschiedene Möglichkeiten, dies zu tun. Nachfolgend sind zwei Optionen aufgeführt:

Option 1 - Klicken Sie mit der rechten Maustaste auf die Datenbank, die Sie kopieren möchten

  • Wählen Sie "Aufgaben"> "Skripte erstellen".

  • 'Bestimmte Datenbankobjekte auswählen'

  • Überprüfen Sie 'Tabellen'

  • Markieren Sie "In neuem Abfragefenster speichern".

  • Klicken Sie auf "Erweitert".

  • Setzen Sie "Datentypen auf Skript" auf "Schema und Daten".

  • Weiter, weiter

Sie können die generierte Abfrage jetzt in der neuen Datenbank ausführen.

Option 2

  • Klicken Sie mit der rechten Maustaste auf die Datenbank, die Sie kopieren möchten

  • 'Aufgaben'> 'Daten exportieren'

  • Weiter, weiter

  • Wählen Sie die Datenbank aus, in die die Tabellen kopiert werden sollen

  • Markieren Sie 'Daten aus einer oder mehreren Tabellen oder Ansichten kopieren'.

  • Wählen Sie die Tabellen aus, die Sie kopieren möchten

  • Fertig

Virus
quelle
4
In SQL Server 2008 sollten Sie zum Kopieren aller Daten jeder Tabelle Skriptdaten unter 'Aufgaben'> 'Skripte generieren' aktivieren. ==> Skriptassistent ==> Skriptoptionsteil auswählen
Arash
1
Option 1 Beim Endschritt wird eine Fehlermeldung preparing dataangezeigt. Option 2 Ich erhalte einen Fehler vorChoose the database to copy the tables to
Emaborsa
1
Ich habe Daten in beiden Datenbanken. Wird Ihre Lösung in dieser Situation helfen?
SanamShaikh
16

Beispiel für das Einfügen in Werte in einer Datenbanktabelle in eine andere Datenbanktabelle

insert into dbo.onedatabase.FolderStatus
(
  [FolderStatusId],
  [code],
  [title],
  [last_modified]
)

select [FolderStatusId], [code], [title], [last_modified]
from dbo.Twodatabase.f_file_stat
Lokanathan
quelle
Dies funktionierte für mich jedoch, in SqlExpress 2014 musste ich die .. -Notation verwenden, die in anderen Antworten gefunden wurde, dh INSERT INTO [db1] .. table1 (ID, MetaTitle) SELECT ID, MetaTitle FROM [db2] .. table1
Adam Hey
Die Reihenfolge sollte onedatabase.dbo.FolderStatusund sein Twodatabase.dbo.f_file_stat. Oder Sie verwenden die ..Notation, wie @AdamHey betont hat.
Bugybunny
6

Wenn sich beide Datenbanken auf demselben Server befinden und Sie die gesamte Tabelle übertragen möchten (Kopie davon erstellen), verwenden Sie einfach select in Anweisung ...

select * into anotherDatabase..copyOfTable from oneDatabase..tableName

Sie können dann den Cursor oben auf Sysobjekte schreiben und auf diese Weise den gesamten Satz von Tabellen kopieren.

Wenn Sie eine komplexere Datenextraktion und -transformation wünschen, verwenden Sie SSIS und erstellen Sie eine entsprechende ETL.

Zilog
quelle
Wenn Sie das Select * in der Syntax verwenden, werden die Schlüssel und Einschränkungen nicht kopiert
ArieKanarie
6

Befolgen Sie für Benutzer von Azure die geänderten Anweisungen von Virus:

  1. Öffnen Sie SSMS.
  2. Klicken Sie mit der rechten Maustaste auf die Datenbank, aus der Sie Daten kopieren möchten .
  3. Wählen Sie Skripte generieren >> Bestimmte Datenbankobjekte auswählen >> Wählen Sie die Tabellen / Objekte aus, die Sie übertragen möchten. starker Text
  4. Klicken Sie im Bereich "In Datei speichern" auf " Erweitert"
  5. Setzen Sie "Datentypen zu Skript" auf Schema und Daten
  6. Setzen Sie "Script DROP and CREATE" auf Script DROP and CREATE
  7. Setzen Sie unter "Tabellen- / Ansichtsoptionen" relevante Elemente auf TRUE. Ich empfehle jedoch, für alle Fälle alles auf TRUE zu setzen. Sie können das Skript nach der Generierung jederzeit ändern.
  8. Dateipfad festlegen >> Weiter >> Weiter
  9. Öffnen Sie die neu erstellte SQL-Datei. Entfernen Sie "Verwenden" vom Anfang der Datei.
  10. Öffnen Sie ein neues Abfragefenster in der Zieldatenbank, fügen Sie den Skriptinhalt ein (ohne ihn zu verwenden) und führen Sie ihn aus.
pim
quelle
4

Sie können Visual Studio 2015 verwenden. Gehen Sie zu Tools => SQL Server => Vergleich neuer Daten

Wählen Sie die Quell- und Zieldatenbank aus .

Pavan Shevle
quelle
1
Es ist ein großartiges Werkzeug. obwohl der Vergleich langsam ist :)
Mi.HTR
3
  1. Sie können die Datenbank mit Management Studio sichern und wiederherstellen.
  2. Auch in Management Studio können Sie "Datenbank kopieren" verwenden.
  3. Sie können dies sogar manuell tun, wenn es einen Grund dafür gibt. Ich meine, manuelle Erstellung der Zieldatenbank und manuelles Kopieren von Daten durch SQL-Anweisungen ...

Kannst du klarstellen, warum du das fragst? Ist es so, dass Sie keine Erfahrung damit haben oder etwas anderes?

e4rthdog
quelle
2

Diese Lösungen funktionieren, wenn die Zieldatenbank leer ist. Falls beide Datenbanken bereits Daten enthalten, benötigen Sie etwas Komplizierteres: http://byalexblog.net/merge-sql-databases

Anubis
quelle
2
Das ist alles schön und gut, außer dass dieser Typ FKs und PKs fallen lässt und sie nicht zurückzusetzen scheint ... Sollten Antworten nicht mehr als effektiv nur ein Link zu den Sachen anderer sein?
Jon
1
@ Jon Warum möchten Sie PK und FK in der Quellendatenbank wiederherstellen? Es ist besser, es nach dem Export zu kopieren und in den Papierkorb zu werfen.
Anubis
1
Ich versuche, zwei Umgebungen zu synchronisieren (dh die Qualitätssicherung auf "Entwickeln" zu reduzieren, damit nicht alle Daten eingegeben werden müssen).
Jon
0

Dies kann durch eine T-SQL-Anweisung erreicht werden, wenn Sie wissen, dass die FROMKlausel eine Datenbank für den Tabellennamen angeben kann.

insert into database1..MyTable
select from database2..MyTable

Microsoft erklärt die Syntax folgendermaßen: https://docs.microsoft.com/en-us/sql/t-sql/queries/from-transact-sql?view=sql-server-ver15

Wenn die Tabelle oder Ansicht in einer anderen Datenbank auf derselben Instanz von SQL Server vorhanden ist, verwenden Sie einen vollständig qualifizierten Namen im Formular database.schema.object_name.

schema_namekann wie oben weggelassen werden, was das Standardschema des aktuellen Benutzers bedeutet. Standardmäßig ist es dbo.

Fügen Sie Spalten / Zeilen hinzu, wenn Sie möchten. Stellen Sie sicher, dass Sie eine neue Tabelle erstellen, bevor Sie Daten verschieben.

Themenfeld
quelle