2011-04-13 73 views
0

我有一個客戶表,其中包含客戶的詳細信息。以下是字段使用外鍵將BULK INSERT插入表

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,1) not null, 
    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文件,這是允許的。

我不知道該怎麼做......任何想法?

回答

1

您可以使用通過外鍵禁用novalidate。一旦你導入了所有的數據,你就可以通過外鍵來啓用無效驗證。也可以用主鍵來完成。沒有驗證選項的好處是您的以前的數據不會根據該約束的規則進行檢查,但是因此檢查後的數據。如果你想我可以粘貼整個語法來做同樣的事情