You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL Server中创建包含冒号(:)列名的数据库表

解决SQL Server跨库复制表的语法错误及实现步骤

错误原因分析

  1. 关键字误用:你用INSERT TABLE尝试创建表,SQL Server中创建表的正确关键字是CREATE TABLE,INSERT仅用于插入数据。
  2. 列名非法字符:SQL Server不允许列名包含冒号(:),这是"Invalid Syntax near :"报错的直接原因。

正确实现步骤

1. 在DB2中创建目标表NEW_PERSON

修正列名格式,使用SQL Server支持的命名规则(推荐用下划线替代冒号,如需保留特殊字符需用方括号包裹):

-- 推荐:使用合法列名
CREATE TABLE DB2.dbo.NEW_PERSON (
    P_Name varchar(255),
    P_Address varchar(255)
);

-- 可选:必须保留冒号格式时(不推荐,后续操作易踩坑)
CREATE TABLE DB2.dbo.NEW_PERSON (
    [P:Name] varchar(255),
    [P:Address] varchar(255)
);

2. 从DB1的Person表复制数据到DB2

通过跨数据库全限定表名访问源数据,执行插入:

-- 对应合法列名的插入语句
INSERT INTO DB2.dbo.NEW_PERSON (P_Name, P_Address)
SELECT [P:Name], [P:Address] 
FROM DB1.dbo.Person;

-- 对应带冒号列名的插入语句
INSERT INTO DB2.dbo.NEW_PERSON ([P:Name], [P:Address])
SELECT [P:Name], [P:Address] 
FROM DB1.dbo.Person;

3. 快捷方式:一键复制表结构+数据

如果无需修改列名,直接完整复制表可以用这条语句一步完成:

SELECT [P:ID], [P:Address]
INTO DB2.dbo.NEW_PERSON
FROM DB1.dbo.Person;

该语句会自动在DB2中创建与查询结果结构一致的NEW_PERSON表,并填充源表数据。


内容的提问来源于stack exchange,提问作者keerthana selvi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 13:01:42