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

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

9 ответов


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

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

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


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

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

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


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

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

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

вы можете:

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

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


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

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

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

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


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

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


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

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

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


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

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

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

    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

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


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

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

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


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

вставить в Destination_Existing_Tbl выберите col1, col2 из Source_Tbl


Копирование Данных

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