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



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

1783   9  

9 ответов:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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

Comments

    Ничего не найдено.