Создайте реплику таблицы SQL - PullRequest
4 голосов
/ 13 июля 2009

Мне нужен запрос для создания таблицы, которая является точной копией, но с другим именем таблицы и без каких-либо данных из исходной таблицы, используя SQL-запрос!

Ответы [ 10 ]

11 голосов
/ 13 июля 2009

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

SELECT * INTO Table_Copy
FROM Table
where 1=2

Будет создана пустая таблица с такой же структурой.

4 голосов
/ 13 июля 2009

У Джонатана (есть голосование), и вам, вероятно, стоит пойти с этим, потому что он более переносим. Я обычно использую что-то подобное:

SELECT TOP 0 * INTO [New_Table] FROM [Old_Table]

Я думаю, это лучше отражает то, что вы делаете, но мне нравится Джонатан, потому что «TOP 0» специфичен для SQL Server, и поэтому он более переносим.

3 голосов
/ 13 июля 2009
  • SQL Server Management Studio
  • Обозреватель объектов
  • Connect -> Ваш сервер
  • Базы данных -> Выбор базы данных
  • Таблица
  • Щелкните правой кнопкой мыши по вашему столу
  • Таблица сценариев как -> Создать в -> Новое окно редактора запросов
1 голос
/ 19 января 2011
SELECT * INTO Table_Copy
FROM Table
where 1=2

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

SELECT * INTO Table_Copy
FROM Table

Это создаст копию с данными тоже.

1 голос
/ 13 июля 2009

Если вы используете Postgresql:

CREATE TABLE LIKE table_name

http://www.postgresql.org/docs/8.1/static/sql-createtable.html

1 голос
/ 13 июля 2009

Для MySQL вы можете вызвать SHOW CREATE TABLE table_name;

Будет отображен запрос CREATE TABLE. Просто измените имя таблицы в этом запросе, и все готово.

http://dev.mysql.com/doc/refman/5.1/en/show-create-table.html

0 голосов
/ 28 декабря 2017

в postgres вы можете использовать ключевое слово INHERITS или LIKE, чтобы создать копию таблицы (только копирует структуру таблицы)

CREATE TABLE client_new (как клиент);

или

CREATE TABLE client_new () наследует (клиент)

Использование INHERITS создает постоянную связь между новой дочерней таблицей и ее родительскими таблицами. Модификации схемы к родителю (родителям) обычно распространяются и на потомков, и по умолчанию данные дочерней таблицы включаются в сканы родителя (ей). Предложение LIKE указывает таблицу, из которой новая таблица автоматически копирует все имена столбцов, их типы данных и ограничения, не равные NULL. В отличие от INHERITS, новая таблица и исходная таблица полностью разделяются после завершения создания. Изменения в исходной таблице не будут применены к новой таблице, и невозможно включить данные новой таблицы в просмотры исходной таблицы.

0 голосов
/ 01 июля 2013

create table <new table name> as select * from <old tale name from which you would like to extract data>

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

0 голосов
/ 13 июля 2009
select * into newtablename from sourcetablename
go
truncate newtablename
go

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

0 голосов
/ 13 июля 2009

Это может помочь вам:

CREATE TABLE foo AS SELECT...

Подробнее здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...