【问题标题】:create table from another table in different database in sql server 2005在 sql server 2005 中从不同数据库中的另一个表创建表
【发布时间】:2011-02-28 08:02:51
【问题描述】:
我有一个带有表“A”的数据库“temp”。我创建了新数据库“temp2”。
我想将表 "A" 从 "temp" 复制到 "temp2" 的新表中。我试过这个语句,但它说我的语法不正确,下面是语句:
CREATE TABLE B IN 'temp2'
AS (SELECT * FROM A IN 'temp');
这是错误:
消息 156,级别 15,状态 1,行 2
关键字“IN”附近的语法不正确。
消息 156,第 15 级,状态 1,第 3 行
关键字“IN”附近的语法不正确。
谁知道问题出在哪里?
提前致谢,
格雷格
【问题讨论】:
标签:
sql-server
sql-server-2005
select
create-table
【解决方案1】:
我以前没有见过这种语法。这是我通常使用的。
SELECT *
INTO temp2.dbo.B
FROM temp.dbo.A
【解决方案2】:
查询应该是:
SELECT * INTO temp2.dbo.b
FROM temp.dbo.a
【解决方案3】:
您需要限定足够多的表名,以便 SQL Server 能够识别正确的表。
名称结构为<server name>.<database name>.<schema>.<table>。由于两个表都位于同一台服务器上,因此您可以省去它,但仍然需要其余的:
SELECT *
INTO temp2.dbo.B
FROM temp.dbo.A
【解决方案4】:
请注意,SELECT INTO 不会复制索引。如果你也想要它们,你可以从源代码生成脚本;在目标数据库中运行并插入
插入 temp2.dbo.b(列)
从 temp.dbo.a 中选择列
【解决方案5】:
如果您不想要数据,您可以这样做:
SELECT TOP 0 * INTO temp2.dbo.b
FROM temp.dbo.a
【解决方案6】:
如果您不想要数据并且只想要没有数据的表的 shcema,那么您也可以使用这种方法...
SELECT * INTO temp2.dbo.b
FROM temp.dbo.a where 1=0
【解决方案7】:
最简单的方法是右键单击数据库temp 中的表A,然后单击Script Table as => CREATE to => New Query Editor Window。这将创建脚本。
然后,更改以下 2 行。并为新数据库运行它。
USE [temp2]
....
CREATE TABLE [dbo].[B]
.....
【解决方案8】:
如果您想从当前 DB 在另一个 DB 中创建新表,请运行查询。
CREATE TABLE `destination_database_name`.table_dummy AS (
SELECT * FROM currentDB.table
)