Kopiowanie tabel z jednej bazy danych do drugiej w SQL Server

Mam bazę danych o nazwie foo i bazę danych o nazwie bar. Mam tabelę w foo o nazwie tblFoobar, którą chcę przenieść (dane i wszystkie) do paska bazy danych z bazy danych foo. Jakie jest polecenie SQL, aby to zrobić?

Author: Christopher Rapcewicz, 2008-10-09

9 answers

Na SQL Server? i na tym samym serwerze bazy danych? Użyj trzyczęściowego nazewnictwa.

INSERT INTO bar..tblFoobar( *fieldlist* )
SELECT *fieldlist* FROM foo..tblFoobar
To tylko przenosi dane. Jeśli chcesz przenieść definicję tabeli (i inne atrybuty, takie jak uprawnienia i indeksy), musisz zrobić coś innego.
 197
Author: Amy B,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-10 02:51:50

Zadanie "Importuj dane" SQL Server Management Studio (kliknij prawym przyciskiem myszy na nazwę DB, a następnie zadania) zrobi większość tego za Ciebie. Uruchom go z bazy danych, do której chcesz skopiować dane.

Jeśli tabele nie istnieją, utworzy je za ciebie, ale prawdopodobnie będziesz musiał odtworzyć dowolne indeksy itp. Jeśli tabele istnieją, domyślnie dołącza nowe dane, ale można je dostosować (edytować mapowania), aby usunąć wszystkie istniejące dane.

Używam tego cały czas i to działa całkiem nieźle.

 527
Author: David,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-26 07:04:52

To powinno zadziałać:

SELECT * 
INTO DestinationDB..MyDestinationTable 
FROM SourceDB..MySourceTable 

To Nie kopiuje stałe, domyślne lub indeksy. Utworzona tabela nie będzie miała klastrowego indeksu.

Alternatywnie możesz:

INSERT INTO DestinationDB..MyDestinationTable 
SELECT * FROM SourceDB..MySourceTable

Jeśli tabela docelowa istnieje i jest pusta.

 95
Author: leoinfo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-10 02:50:55

Jeśli jest to tylko jedna tabela, to wszystko, co musisz zrobić, to

  • definicja tabeli skryptów
  • Tworzenie nowej tabeli w innej bazie danych
  • zaktualizuj Zasady, indeksy, uprawnienia i inne
  • Import danych (kilka wstaw do przykładów jest już pokazanych powyżej)

Jedna rzecz, którą musisz wziąć pod uwagę, to inne aktualizacje, takie jak migracja innych obiektów w przyszłości. Pamiętaj, że tabele źródłowe i docelowe nie mają tej samej nazwy. Oznacza to, że będziesz mieć również aby wprowadzić zmiany, jeśli obiekty zależne, takie jak widoki, procedury przechowywane i inne.

Odrobina jednego lub kilku obiektów można przejść ręcznie bez żadnych problemów. Jednak, gdy istnieje więcej niż tylko kilka aktualizacji 3rd party porównywarka narzędzia są bardzo przydatne. W tej chwili używam ApexSQL Diff do migracji schematów, ale nie możesz się pomylić z żadnym innym narzędziem.

 46
Author: Igor Voplov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-29 09:00:49
  1. Skrypt create table W management studio uruchom ten skrypt w pasku, aby utworzyć tabelę. (Kliknij prawym przyciskiem myszy table w object explorer, script table as, create to...)

  2. INSERT bar.[schema].table SELECT * FROM foo.[schema].table

 22
Author: ScottStonehouse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-23 09:25:05

Możesz również użyć Kreator generowania skryptów SQL Server aby pomóc w tworzeniu skryptów SQL, które mogą wykonać następujące czynności:

  • skopiuj schemat tabeli
  • wszelkie ograniczenia (tożsamość, wartości domyślne, itp.)
  • DANE w tabeli
  • i wiele innych opcji w razie potrzeby

Dobry przykładowy przepływ pracy dla SQL Server 2008 z zrzutami ekranu pokazanymi Tutaj .

 16
Author: ryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-12 00:04:05

Możesz iść w ten sposób: (ogólny przykład)

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

Również jeśli musisz wygenerować nazwy kolumn, aby umieścić w klauzuli insert, użyj:

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

Skopiuj wynik i wklej do okna zapytania, aby reprezentować nazwy kolumn tabeli, a nawet to wyklucza kolumnę tożsamości:

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

Pamiętaj, że skrypt do kopiowania wierszy będzie działał, jeśli bazy danych należą do tej samej lokalizacji.


Możesz spróbować tego.
select * into <Destination_table> from <Servername>.<DatabaseName>.dbo.<sourceTable>

Nazwa serwera jest opcjonalna jeśli oba DB znajdują się na tym samym serwerze.

 8
Author: NeverHopeless,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-26 11:20:02

Jeżeli istnieje już tabela i chcemy skopiować tylko dane, możemy spróbować tego zapytania.

Insert into Destination_Existing_Tbl select col1, col2 FROM Source_Tbl

 1
Author: Mohan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-24 06:06:35

Kopiuj Dane

INSERT INTO Alfestonline..url_details(url,[status],recycle) 
SELECT url,status,recycle FROM AlfestonlineOld..url_details
 0
Author: Arun Prasad E S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-18 09:55:04