Скопируйте таблицы из одной базы данных в другую в SQL Server

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

Ответ 1

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

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

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

Ответ 2

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

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

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

Ответ 3

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

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

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

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

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

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

Ответ 4

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

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

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

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

Ответ 5

  • Script create table в студии управления запустите script в панели, чтобы создать таблицу. (Правая таблица щелчка в проводнике объектов, script table as, create to...)

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

Ответ 6

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

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

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

Ответ 7

Вы можете пойти следующим образом: (общий пример)

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')

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

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

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


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

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

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

Ответ 8

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

Вставить в Destination_Existing_Tbl выбрать col1, col2 FROM Source_Tbl

Ответ 9

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

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