如何在SQL Server中创建包含冒号(:)列名的数据库表
解决SQL Server跨库复制表的语法错误及实现步骤
错误原因分析
- 关键字误用:你用
INSERT TABLE尝试创建表,SQL Server中创建表的正确关键字是CREATE TABLE,INSERT仅用于插入数据。 - 列名非法字符: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
相关产品推荐
相关产品推荐

