Ran*_*aul 4 sql sql-server sql-server-2008
我有Locale_Code两个不同的数据库CP和表PP
这是我表的插入脚本
CREATE TABLE [dbo].[LOCALE_CODE](
[id] [bigint] IDENTITY(1,1) NOT NULL,
[active] [bit] NOT NULL,
[code] [nvarchar](4000) NULL,
[created_at] [datetime] NULL,
[created_by] [nvarchar](4000) NULL,
[display_name] [nvarchar](4000) NULL,
[updated_at] [datetime] NULL,
[updated_by] [nvarchar](4000) NULL,
[read_permission] [nvarchar](4000) NULL,
PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)
我试图将PP.dbo.LOCALE_CODE中的所有行插入CP.dbo.LOCALE_CODE,如下所示
SET IDENTITY_INSERT CP.dbo.LOCALE_CODE ON
insert into CP.[dbo].[LOCALE_CODE] select * from PP.dbo.LOCALE_CODE
Run Code Online (Sandbox Code Playgroud)
但我得到低于错误
只有在使用列列表且IDENTITY_INSERT为ON时,才能指定表'CP.dbo.LOCALE_CODE'中标识列的显式值.
我甚至尝试了如下的批量插入
BULK INSERT CP.[dbo].[LOCALE_CODE] from 'C:\locales.csv'
with (fieldterminator = ',', rowterminator = '\n' )
go
Run Code Online (Sandbox Code Playgroud)
但我得到低于错误
当IDENTITY_INSERT设置为ON或复制用户插入NOT FOR REPLICATION标识列时,必须为表'LOCALE_CODE'中的标识列指定显式值.
有人可以帮助修复BULK插件或从PP.Locale_Code直接插入到PP.Locale_Code吗?
您需要在插入时明确提及目标表中的列名称.将Col1,Col2等替换为CP.[dbo].[LOCALE_CODE]表的列表
SET IDENTITY_INSERT CP.dbo.LOCALE_CODE ON
insert into CP.[dbo].[LOCALE_CODE] (Col1 ,Col2 , Col3)
select * from PP.dbo.LOCALE_CODE
Run Code Online (Sandbox Code Playgroud)
您可以在源表的SELECT中使用*PP.dbo.LOCALE_CODE