П ри работе с MS SQL Server приходиться иногда перемещать таблицы из одной базы в другую. Чаще всего такую манипуляцию проделывают с различными Справочниками (классификаторами). В качестве примера опишем следующую стандартную ситуацию.
Прим. Как скопировать табличку из одной СУБД в другую от разных производителей можно посмотреть здесь
Представим , что вы являетесь владельцем двух фирм и возникла необходимость переместить (скопировать) таблицу Справочник товаров Tovary из БД OOO_RogaKopyta в базу данных ZAO_Finish:
Для выполнения этой задачи становимся на таблицу dbo.Tovary в базе-источнике ( OOO_RogaKopyta в нашем примере) и жмём на Выбрать первые . строк в контекстном меню :
Далее в окне запросов пишем нехитрое SQL- выражение и жмём Выполнить :
Select * into ZAO_Finish.dbo.Tovary From OOO_ RogaKopyta.dbo.Tovary
Результат — табличка Tovary будет скопирована из БД OOO_RogaKopyta в БД ZAO_Finish:
Я только что создал пустую базу данных на своей машине. Теперь я хочу скопировать таблицу из нашей базы данных сервера в эту локальную базу данных.
Какие команды sql мне нужно запустить, чтобы сделать это? Я хочу создать новую таблицу, скопировать данные из старой таблицы и вставить ее в новую таблицу.
Создайте связанный сервер на исходном сервере. Самый простой способ — щелкнуть правой кнопкой мыши "Связанные серверы" в Management Studio; в разделе Управление → Объекты сервера.
Затем вы можете скопировать таблицу, используя имя из 4 частей, server.database.schema.table :
Это создаст новую таблицу с той же структурой, что и исходная, и скопирует данные.
Другим методом, который можно использовать для копирования таблиц из исходной базы данных в пункт назначения, является мастер экспорта и импорта SQL Server, который доступен в SQL Server Management Studio.
У вас есть выбор для экспорта из исходной базы данных или импорта из целевого для передачи данных.
Этот метод — быстрый способ скопировать таблицы из исходной базы данных в целевую, если вы хотите скопировать таблицы, не имеющие отношения к отношениям и заказам таблиц.
При использовании этого метода индексы таблиц и ключей не будут переданы. Если вы заинтересованы в его копировании, вам необходимо сгенерировать скрипты для этих объектов базы данных.
Если это внешние ключи, соединяющие эти таблицы вместе, вам нужно экспортировать данные в правильном порядке, иначе мастер экспорта не будет выполнен.
Существует несколько способов копирования таблицы в базе данных MS SQL Server. Предлагаю несколько вариантов создания копии таблиц. Какой из них выбрать – зависит от структуры таблицы, наличия в ней индексов, триггеров и т.п., а также желания делать что-то руками.
1. Ручной метод копирования структуры таблицы
В Micrisoft SQL Management Studio выбрать базу, выбрать таблицу, нажать правой кнопкой мыши и выбрать пункты "Script Table as" -> "CREATE TO" -> "New Query Editor Window". В окне запроса откроется код для создания таблицы. В нем нужно указать имя базы, в которой нужно сделать копию таблицы, и новое имя, если база не меняется. Как создать код для создания структуры имеющейся таблицы, показано на рисунке ниже.
Как создать код для создания структуры имеющейся таблицы
С помощью этого способа будут созданы индексы таблицы, но не скопируются триггеры. Их нужно копировать аналогичным способом.
Для копирования данных в уже созданную таблицу нужно использовать такой SQL запрос:
2. Копирование SQL таблицы запросом в одну строчку
Сделать копию структуры таблицу и данных внутри одной базы:
Скопировать структуры таблицу и ее данные из одной базы в другую:
Минус у такого решения – не копируются индексы.