У меня есть таблица ABC в базе данных DB. Я хочу создать копии ABC с именами ABC_1, ABC_2, ABC_3 в той же БД. Как я могу это сделать, используя Management Studio (желательно) или SQL-запросы?
Это для SQL Server 2008 R2.
У меня есть таблица ABC в базе данных DB. Я хочу создать копии ABC с именами ABC_1, ABC_2, ABC_3 в той же БД. Как я могу это сделать, используя Management Studio (желательно) или SQL-запросы?
Это для SQL Server 2008 R2.
Ответы:
Использование SELECT ... INTO
:
SELECT *
INTO ABC_1
FROM ABC;
Это создаст новую таблицу ABC_1
с той же структурой столбцов, что ABC
и те же данные, и с такими же данными. Однако ограничения (например, ключи, значения по умолчанию) не копируются.
Вы можете запускать этот запрос несколько раз с другим именем таблицы каждый раз.
Если вам не нужно копировать данные, только чтобы создать новую пустую таблицу с той же структурой столбцов, добавьте WHERE
предложение с ложным выражением:
SELECT *
INTO ABC_1
FROM ABC
WHERE 1 <> 1;
SELECT TOP(0) *
чище, чем метод всегда ложных WHERE
утверждений
В SSMS разверните базу данных в обозревателе объектов , перейдите в « Таблицы» , щелкните правой кнопкой мыши интересующую вас таблицу и выберите « Сценарий таблицы как» , « Создать в» , « Новое окно редактора запросов» . Выполните поиск и замену ( CTRL + H ), чтобы изменить имя таблицы (т.е. введите ABC
в поле « Найти» и ABC_1
в поле « Заменить на», затем нажмите « ОК» ).
Другие ответы, показывающие, как это сделать с помощью SQL, также работают хорошо, но разница с этим методом заключается в том, что вы также получите любые индексы, ограничения и триггеры.
Если вы хотите включить данные, после создания этой таблицы запустите приведенный ниже сценарий, чтобы скопировать все данные из ABC (сохраняя те же значения идентификаторов, если у вас есть поле идентификации):
set identity_insert ABC_1 on
insert into ABC_1 (column1, column2) select column1, column2 from ABC
set identity_insert ABC_1 off
IDENTITY_INSERT
значение ON, чтобы разрешить установку столбца идентификаторов «вручную», вы смешали порядок в своем примере. Кроме того , вы должны поименный список ваших колонок
Если вы хотите продублировать таблицу со всеми ее ограничениями и ключами, выполните следующие действия:
Затем для копирования данных запустите следующий скрипт:
SET IDENTITY_INSERT DuplicateTable ON
INSERT Into DuplicateTable ([Column1], [Column2], [Column3], [Column4],... )
SELECT [Column1], [Column2], [Column3], [Column4],... FROM MainTable
SET IDENTITY_INSERT DuplicateTable OFF
Это еще один вариант:
select top 0 * into <new_table> from <original_table>
используйте sql server manegement studio или netcat, и вам будет проще манипулировать sql