创建sql表的副本

时间:2009-07-13 13:11:35

标签: sql sql-server

我需要一个查询来创建一个表,它是一个精确的副本,但是使用不同的表名,并且使用sql查询没有来自源表的任何数据!

10 个答案:

答案 0 :(得分:11)

你可以试试这个

SELECT * INTO Table_Copy
FROM Table
where 1=2

它将创建一个具有相同结构的空表。

答案 1 :(得分:4)

Jonathan有它(upvoted),你可能应该选择它,因为它更便携。我通常使用类似的东西:

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

我认为这更好地表达了你正在做的事情,但我喜欢Jonathan,因为'TOP 0'是特定于SQL Server的,所以他的便携性更强。

答案 2 :(得分:3)

  • SQL Server Management Studio
  • 对象资源管理器
  • 连接 - >您的服务器
  • 数据库 - >选择数据库
  • 右键单击表
  • 脚本表为 - >创建至 - >新查询编辑器窗口

答案 3 :(得分:1)

对于MySQL,您可以调用SHOW CREATE TABLE table_name;

它将显示CREATE TABLE查询。只需更改该查询中的表名,就可以了。

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

答案 4 :(得分:1)

如果您使用Postgresql:

CREATE TABLE LIKE table_name

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

答案 5 :(得分:1)

SELECT * INTO Table_Copy
FROM Table
where 1=2

当我尝试在没有任何数据的情况下创建表的副本时,这非常有效。

SELECT * INTO Table_Copy
FROM Table

这将创建包含数据的副本。

答案 6 :(得分:0)

这可以帮到你:

CREATE TABLE foo AS SELECT...

了解更多here

答案 7 :(得分:0)

select * into newtablename from sourcetablename
go
truncate newtablename
go

这将产生精确的副本,但它也会首先复制您使用truncate语句删除的数据。

答案 8 :(得分:0)

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

它将创建一个具有不同名称的新表,但会将旧表中的所有现有数据复制到新表中。

答案 9 :(得分:0)

在postgres中,您可以使用INHERITS或LIKE关键字来制作表的副本(仅复制表的结构)

CREATE TABLE client_new(LIKE客户端);

CREATE TABLE client_new()INHERITS(客户端)

使用INHERITS会在新子表与其父表之间创建持久关系。对父项的模式修改通常也传播给子项,默认情况下,子表的数据包含在父项的扫描中。 LIKE子句指定一个表,新表自动复制所有列名称,数据类型及其非空约束。与INHERITS类似,新表和原始表在创建完成后完全解耦。对原始表的更改将不会应用于新表,并且无法在原始表的扫描中包含新表的数据。