如何解决使用外键将BULK INSERT插入表中
| 我有一个表Customer,其中包含客户的详细信息。以下是字段CustId (PrimaryKey),Name,Date of Birth
我还有另一个表,资产信息。有以下字段-
AssetId (PrimaryKey),AssetValue,CustId (Foreign Key Reference)
我的CSV文件就是这样
Name,Date of Birth,AssetValue
并且我必须将其插入两个表中。我拆分了CSV文件,其中一个使用出生日期名称,另一个仅使用AssetValue。
这是我所做的-
/*Creation of Table*/
CREATE TABLE Customer
(
custid int identity(1,1) not null,name nvarchar(50) not null,dateofbirth datetime not null,primary key (custid)
)
CREATE TABLE Asset
(
AssetId int identity(1,AssetDollars money not null,primary key (AssetId),CustId int foreign key references Customer(custid)
)
对于批量插入,我所做的就是这个。我使用名称和出生日期这两个字段为客户创建了一个视图,然后插入了记录。
这是我所做的-
CREATE view vw_bulk_insert_customer
AS
SELECT name,dateofbirth FROM customer
BULK INSERT vw_bulk_insert_customer
FROM \'C:\\Customer.csv\'
WITH
(
FIELDTERMINATOR = \',\',ROWTERMINATOR = \'\\n\'
)
这工作得很好。
现在,如何将其插入带有CustId的Asset表中(因为它在CSV文件中不可用)。
我不允许更改CSV文件。我可以拆分CSV文件,这是允许的。
我不知道该怎么做...有什么想法吗?
解决方法
您可以对外键使用disable novalidate。导入所有数据后,您可以对外键启用novalidate。主键也可以执行此操作。使用novalidate选项的好处是不会根据该约束的规则检查您以前的数据,但是将检查之后的数据。如果你想我可以粘贴整个语法来做同样的事情
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。