我正在将数据从一个旧的非关系数据库迁移到一个新的关系数据库结构中。目前,我不知道如何正确处理要插入到某个数据表中的数据。
基本上我有以下两个表:
Table: Contact
Contact_ID INT IDENTITY NOT NULL
First_Name VARCHAR(50) NULL
Last_Name VARCHAR(50) NULL
Company_ID INT NOT NULL
Table: Contact_Fax
Contact_ID INT NOT NULL
Fax_Num VARCHAR(20) NOT NULL
In_User BIT NOT NULL
现在表格是这样设置的,这样我们就可以轻松地管理联系人获取第二个传真号码,或者在保留旧信息的同时获取新的传真号码,以备需要时使用。
我从中提取数据的表的数据布局如下:
Table: Company
Company_Name VARCHAR(100) NOT NULL
Contant VARCHAR(100) NULL
Address VARCHAR(100) NULL
City VARCHAR(100) NULL
Phone1 VARCHAR(20) NULL
Phone2 VARCHAR(20) NULL
Fax VARCHAR(20) NULL
现在,我已经能够将csv文件放在一起以保存我需要的数据,每个文件都有特定的列来与我要导入的表相匹配:
CSV: Contact
First_Name
Last_Name
Company
CSV: Contact_Fax
First_Name
Last_Name
Company
Fax
我可以从任何一个csv文件中获取数据,并将它们放入临时表中,以便用于插入实际的数据库表。但是,对于我的传真表,当我将临时表中的数据插入到实际表中时,并不是所有的数据都被传输了。这是我的SQL语句:
INSERT INTO Contact_Fax
SELECT Contact_ID, Fax, 1
FROM Con_Fax_Temp
INNER JOIN Contact ON Contact.First_Name = Con_Fax_Temp.First_Name
INNER JOIN Company ON Company.Company_Name = Con_Fax_Temp.Company_Name
WHERE Contacts.Company_ID = Company.Company_ID
我到底做错了什么?
编辑:以下是csv文件中的数据示例:
CSV: Contact
Mike,Langtry,LANGTRY BLAST TECHNOLOGIES INC.
Adrian,Stickland,Main,Connect Tech Inc
Todd,Corley,Main,Takata Seat Belts
CSV: Contact_Fax
Mike,Langtry,LANGTRY BLAST TECHNOLOGIES INC.,9056812814
Adrian,Stickland,Connect Tech Inc,5198364878
Todd,Corley,Takata Seat Belts,6147663628
伊迪丝2:所以我描述我要完成的任务时很可怕。
我正在尝试插入来自
Contact_Fax
csv输入
联系人传真
表。现在
Con_Fax_Temp
我在SQL中提到的表如下:
Table: Con_Fax_Temp
First_Name VARCHAR(50) NOT NULL
Last_Name VARCHAR(50) NULL
Company_Name VARCHAR(75) NOT NULL
Fax VARCHAR(25) NOT NULL
我的目标是将我的csv的每个记录插入到
联系人传真
表,使用
Contact_ID
的列
Contact
表作为外键。要检查是否具有正确的外键值,我要比较
First_Name
和
Company_Name
中的列
传真温度
带有的表
名字
和
Company_ID
中的列
联系人
表。
注:
这个
联系人
表具有外键
公司ID
所以我加入了
Company
表以便我可以引用
公司名称
与每个
公司ID
我希望我能更好地解释这一点。