Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从添加标识的临时表插入_Sql_Sql Server_Tsql_Identity_Bulkinsert - Fatal编程技术网

Sql 从添加标识的临时表插入

Sql 从添加标识的临时表插入,sql,sql-server,tsql,identity,bulkinsert,Sql,Sql Server,Tsql,Identity,Bulkinsert,我已经使用SQL Server上的大容量插入从csv文件中导入了几行到临时表中。我必须在临时表上导入,因为CSV文件中不存在主键ID 现在我想把数据转移到真实的表格上;但是我不能,因为我找不到添加id的方法 我试过: INSERT INTO companies (id, code, name, vat_code, ce_vat_code, fiscal_code, address, zip_code) SELECT IDENTITY(INT) AS id, code, name, va

我已经使用SQL Server上的大容量插入从csv文件中导入了几行到临时表中。我必须在临时表上导入,因为CSV文件中不存在主键ID

现在我想把数据转移到真实的表格上;但是我不能,因为我找不到添加id的方法

我试过:

INSERT INTO companies (id, code, name, vat_code, ce_vat_code, fiscal_code, 
    address, zip_code)
SELECT IDENTITY(INT) AS id, code, name, vat_code, ce_vat_code, 
    fiscal_code, address, zip_code
FROM   temp_companies
但我得到了这个错误:

The IDENTITY function can only be used when the SELECT statement has an INTO 
clause.

如果
companys.id
identity()
列,则无需为该列插入值:

INSERT INTO companies (code, name, vat_code, ce_vat_code, fiscal_code, address, zip_code)
SELECT code, name, vat_code, ce_vat_code, fiscal_code, address, zip_code
FROM   temp_companies

如果
companys.id
不是
identity()
sequence
下一个默认值,则可以从
companys
max()
id
添加
行编号()

INSERT INTO companies (id, code, name, vat_code, ce_vat_code, fiscal_code, address, zip_code)
SELECT m.maxid + row_number() over (order by (select 1))
  , code, name, vat_code, ce_vat_code, fiscal_code, address, zip_code
FROM   temp_companies
cross join (select max(id) as maxid from companies) m

如果
companys.id
identity()
列,则无需为该列插入值:

INSERT INTO companies (code, name, vat_code, ce_vat_code, fiscal_code, address, zip_code)
SELECT code, name, vat_code, ce_vat_code, fiscal_code, address, zip_code
FROM   temp_companies

如果
companys.id
不是
identity()
sequence
下一个默认值,则可以从
companys
max()
id
添加
行编号()

INSERT INTO companies (id, code, name, vat_code, ce_vat_code, fiscal_code, address, zip_code)
SELECT m.maxid + row_number() over (order by (select 1))
  , code, name, vat_code, ce_vat_code, fiscal_code, address, zip_code
FROM   temp_companies
cross join (select max(id) as maxid from companies) m

您不能手动将该值插入
标识列
。这是系统生成的代理密钥。只有当
将identity insert
设置为ON时,才能插入值,但仍然不能插入整个
identity

创建该列时,需要将该列
id
默认为
identity
。如果该列现在不是identity,则需要重新创建添加了默认值的表


更新因为您已经将该列作为
identity
列,只需跳过插入该列,插入其余字段,
id
将自动填充。

您不能手动将值插入
identity列
。这是系统生成的代理密钥。只有当
将identity insert
设置为ON时,才能插入值,但仍然不能插入整个
identity

创建该列时,需要将该列
id
默认为
identity
。如果该列现在不是identity,则需要重新创建添加了默认值的表


更新因为您已经将该列作为
identity
列,只需跳过插入该列,插入其余字段,
id
将自动填充。

companys.id
已经是
identity()
列吗?是的,在create语句中:id BIGINT identity(1,1)NOT NULL,然后不应该选择它,将自动填写IS
companys.id
已经是
identity()
列了吗?是的,在create语句中:id BIGINT identity(1,1)NOT NULL,然后不应该选择它,将自动填写。如果为该表设置identity\u insert,则可以插入标识值。而且它不是代理密钥。如果列允许重复,则没有任何内容表明标识必须是唯一的。当然,大多数情况下,我们都将此集合视为主键。thx@SeanLange,对于第一部分,我执行了Metaiond xD,感谢您更正我的错误。后面的部分实际上,如果为该表设置identity_insert,您可以插入标识值。而且它不是代理密钥。如果列允许重复,则没有任何内容表明标识必须是唯一的。当然,大多数情况下,我们都将此集合视为主键。thx@SeanLange,对于第一部分,我执行了metaioned xD,感谢您纠正我的错误。稍后,我尝试了第二个选项(我错了,companys表的id未设置为identity())。但是我得到了以下错误:
列名“id”无效。
@阿根廷在
行编号()中更新为order by
(选择1)
我尝试了第二个选项,(我错了,COMPANYS表没有将id设置为identity()。但是我得到了以下错误:
列名“id”无效。
@阿根廷更新到
(选择1)
行中的
编号()