ОБЪЕМНАЯ ВСТАВКА в таблицу с внешним ключом - PullRequest
0 голосов
/ 13 апреля 2011

У меня есть таблица 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,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 (так как он недоступен в файле CSV).

Мне не разрешено изменять файл CSV.Я могу разделить файл CSV, это разрешено.

Я не знал, как это сделать ... Есть мысли?

1 Ответ

1 голос
/ 18 сентября 2011

вы можете использовать отключить novalidate по внешнему ключу.как только вы импортировали все свои данные, вы можете включить novalidate по внешнему ключу. То же самое можно сделать и с первичным ключом.Преимущество опции novalidate заключается в том, что ваши предыдущие данные не будут проверяться в соответствии с правилами этого ограничения, но данные после этого проверяются.если ты хочешь, я мог бы вставить весь синтаксис, чтобы сделать то же самое

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...