我有一个联系人管理系统和我的联系人的sql转储,其中包含五到六列数据我要导入到三个特定的表中。想知道最好的方法是什么。我已经上传了sql dump ...它现在是我的联系人管理数据库中的一个表。
crm中的表在公司表中只需要contactID ...并在歌曲表中:
然后是第三个表,联系表只需要contactname。
我已经将数据上传到三个表中的每个表(不确定我的订单是否正确)但现在需要更新并匹配第四个表(最初是sql dump)中的数据与其他三个表并更新一切都有其独特的标识符。
表结构:
+DUMP_CONTACTS
id <<< I dont need this ID, the IDs given to each row in the CRM are the important ones.
contact_name
company
year
event_name
event_description
====Destination Tables====
+++CONTACTS TABLE++
*contactID < primary key
*contact_name
+++COMPANIES TABLE+++
*companyID < primary key
*name
*contact_ID
*year
++++Events++++
*EventID < primary key
*companyID
*contactID
*eventname
*description
答案 0 :(得分:0)
您的帖子中有部分我仍然不明白,所以我会给你SQL,然后你可以在测试环境中运行它们,我们可以从那里开始和/或回去开始再次:
-- Populate CONTACTS_TABLE with contact_name from uploaded dump
INSERT INTO CONTACTS_TABLE (contact_name)
SELECT contact_name FROM DUMP_CONTACTS
-- Populate COMPANIES with information from both CONTACTS_TABLE + dump
INSERT INTO COMPANIES (name, contact_ID, year)
SELECT d.company, c.contactID, d.year
FROM DUMP_CONTACTS AS d
INNER JOIN CONTACTS_TABLE AS c
ON d.contact_name = c.contact_name
-- Populate SONGS_TABLE with info from COMPANIES
INSERT INTO SONGS_TABLE (companyID, contactID)
SELECT cm.companyID, cm.contact_ID
FROM COMPANIES AS cm
-- Populate Events with info from COMPANIES + dump
INSERT INTO Events (companyID, contactID, eventname, description)
SELECT cm.companyID, cm.contact_ID, d.event_name, d.event_description
FROM DUMP_CONTACTS AS d
INNER JOIN COMPANIES AS cm
ON d.company = cm.name
我首先填充CONTACTS_TABLE
然后,因为contactID
中的记录需要COMPANIES
,所以插入CONTACTS_TABLE
加入转储的记录。 SONGS_TABLE
直接从COMPANIES
获取数据,最后Events
通过加入COMPANIES
和转储来获取数据。