2008-10-09 2 views
293

У меня есть база данных под названием foo и база данных, называемая bar. У меня есть таблица в foo, называемая tblFoobar, которую я хочу переместить (данные и все) в панель базы данных из базы данных foo. Что такое оператор SQL для этого?Скопируйте таблицы из одной базы данных в другую в SQL Server

ответ

187

На SQL Server? и на том же сервере базы данных? Используйте три имени.

INSERT INTO bar..tblFoobar(*fieldlist*) 
SELECT *fieldlist* FROM foo..tblFoobar 

Это просто перемещает данные. Если вы хотите переместить определение таблицы (и другие атрибуты, такие как разрешения и индексы), вам нужно будет сделать что-то еще.

+0

Вы также должны отдельно установить разрешение таблицы, я считаю. – 2008-10-09 15:31:27

+0

Да, и индексы ... и т. Д. – 2008-10-09 15:32:06

+1

Если вам нужно также вставить идентификационные вставки, у Мастера импорта данных есть опция для этого ^^ - ссылаясь на другой ответ – 2013-08-30 04:07:52

90

Это должно работать:

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

Это будет не копию constaints, по умолчанию или индексов. Созданная таблица будет не имеет кластеризованный индекс.

В качестве альтернативы вы можете:

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

Если таблица назначения существует и пуст.

22
  1. скрипте create table в студии управления, запустить этот скрипт в бар, чтобы создать таблицу. (Щелкните правой кнопкой мыши таблицу в обозревателе объектов, таблицы сценариев, как, сотвори ...)

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

520

среды SQL Server Management Studio, задача "Импорт данных" (щелкните правой кнопкой мыши на имени БД то, задачи) сделают большую часть этого для вас. Запустите его из базы данных, в которую вы хотите скопировать данные.

Если таблицы не существуют, они создадут их для вас, но вам, вероятно, придется воссоздать любые индексы и т. Д. Если таблицы существуют, они будут добавлять новые данные по умолчанию, но вы можете настроить это (редактировать сопоставления), чтобы удалить все существующие данные.

Я использую это все время, и он работает достаточно хорошо.

15

Вы также можете использовать Generate SQL Server Scripts Wizard, чтобы помочь созданию SQL скрипта, который может сделать следующее:

  • скопировать схему таблицы
  • любых ограничений (идентичность, значение по умолчанию, и т.д.)
  • данные в таблице
  • и многие другие параметры при необходимости

Хороший пример рабочего процесса для SQL Server 2008 с показанными снимками экрана here.

8

Вы можете пойти с этим способом: (общий пример)

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

Кроме того, если вам нужно создать имена столбцов, а также поместить в пункте вставки, используйте:

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

Copy результат и вставить в окно запроса, чтобы представить названия столбцов таблицы, и даже это исключает также столбец идентификации:

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

Помните, что сценарий для копирования строк будет работать, если базы данных принадлежат к тому же местоположению.


Вы можете попробовать это.

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

Имя сервера необязательно, если оба БД находятся на одном сервере.

44

Если это одна таблица только тогда все, что вам нужно сделать, это

  • определение таблицы Script
  • Создать новую таблицу в другой базе данных
  • правила обновления, индексы, права доступа и такие
  • Импорт данных (несколько примеров в примерах уже показаны выше)

Одна вещь, которую вы должны будете рассмотреть, - это oth такие как перенос других объектов в будущем. Обратите внимание, что ваши исходные и целевые таблицы не имеют одинакового имени. Это означает, что вам также придется вносить изменения, если вы зависите от объектов, таких как представления, хранимые процедуры и другие.

У вас есть один или несколько объектов, которые вы можете запустить вручную без каких-либо проблем. Однако, когда доступно больше, чем несколько обновлений, сторонние инструменты сравнения очень удобны. Прямо сейчас я использую ApexSQL Diff для миграции схем, но вы не можете пойти не так, как надо, с любым другим инструментом.

0

Копирование данные

INSERT INTO Alfestonline..url_details(url,[status],recycle) 
SELECT url,status,recycle FROM AlfestonlineOld..url_details 
1

Если есть существующая таблица, и мы хотим скопировать только данные, мы можем попробовать этот запрос.

вставки в Destination_Existing_Tbl выбрать col1, col2 ИЗ Source_Tbl

Смежные вопросы