343 Stimmen

Kopieren von Tabellen aus einer Datenbank in eine andere in SQL Server

Ich habe eine Datenbank namens foo und eine Datenbank namens bar. Ich habe eine Tabelle in foo mit dem Namen tblFoobar, die ich von der Datenbank foo in die Datenbank bar verschieben möchte (Daten und alles). Wie lautet die SQL-Anweisung, um dies zu tun?

17voto

ryan Punkte 811

Sie können auch die Assistent zum Generieren von SQL Server-Skripten um die Erstellung von SQL-Skripten zu unterstützen, die Folgendes leisten können:

  • Kopieren des Tabellenschemas
  • alle Beschränkungen (Identität, Standardwerte usw.)
  • Daten innerhalb der Tabelle
  • und viele andere Optionen, falls erforderlich

Gutes Beispiel für einen Arbeitsablauf SQL Server 2008 mit Bildschirmfotos gezeigt aquí .

9voto

NeverHopeless Punkte 10831

Sie können wie folgt vorgehen: (ein allgemeines Beispiel)

insert into QualityAssuranceDB.dbo.Customers (columnA, ColumnB)
Select columnA, columnB from DeveloperDB.dbo.Customers

Auch wenn Sie die Spaltennamen generieren müssen, um sie in die Einfügeklausel einzufügen, verwenden Sie:

    select (name + ',') as TableColumns from sys.columns 
where object_id = object_id('YourTableName')

Kopieren Sie das Ergebnis und fügen Sie es in das Abfragefenster ein, um die Namen der Tabellenspalten darzustellen, und auch dies wird die Identitätsspalte ausschließen:

    select (name + ',') as TableColumns from sys.columns 
where object_id = object_id('YourTableName') and is_identity = 0

Denken Sie daran, dass das Skript zum Kopieren von Zeilen nur funktioniert, wenn sich die Datenbanken am selben Ort befinden.


Das können Sie versuchen.

select * into <Destination_table> from <Servername>.<DatabaseName>.dbo.<sourceTable>

Der Servername ist optional, wenn sich beide DB auf demselben Server befinden.

0voto

Ich gebe Ihnen drei Möglichkeiten:

Wenn es sich um zwei Datenbanken auf derselben Instanz handelt, tun Sie das:

SELECT  * INTO My_New_Table FROM [HumanResources].[Department];

Wenn es sich um zwei Datenbanken auf verschiedenen Servern handelt und Sie verbundene Server haben, tun Sie das:

SELECT  * INTO My_New_Table FROM [ServerName].[AdventureWorks2012].[HumanResources].[Department];

Wenn es sich um zwei Datenbanken auf verschiedenen Servern handelt und Sie keine verknüpften Server haben, tun Sie das:

SELECT * INTO My_New_Table
FROM OPENROWSET('SQLNCLI', 'Server=My_Remote_Server;Trusted_Connection=yes;',
     'SELECT * FROM AdventureWorks2012.HumanResources.Department');

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X