MySql加载文件脚本和2个表

时间:2015-04-07 14:56:33

标签: mysql

所以我有2个表,一个是联系表,如

ContactId BigInt  PK
Name varchar
Phone varchar
Address varchar

和第二个表供应商

CompanyName varchar
ContactId BigIn FK 

我想将供应商加载到这样的表中 当我使用CSV加载供应商时,它会将它们放在联系表中并将它们加载到供应商表

123423234, bob smith, 333-444-5555, 123 stree dr., CompanyOne
123123234, john doe, 444-333-2222, 423 SomeStreet st., Another Company

我保持表格小而简单的帖子,是的还有更多,但这里的关键是我需要使用Vendor表中联系人表格中的ContactID。我想从同一个cvs加载它们。如果它只是一个表但我不知道如何使用2个表,我知道如何做到这一点。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用所有SQL执行此操作,或者使用PHP等脚本语言可能需要/更容易。但这是基本的伪代码概念。

创建一个非标准化的表格,您的CSV文件可以直接适合(我们称之为tempTable)。然后将CSV中的数据放入其中。 (很确定这需要一些脚本)。

将联系信息插入联系表:

INSERT INTO contact (name, phone, address) (SELECT DISTINCT name, phone, address FROM tempTable);

将一个contactID列添加到tempTable,并通过JOINING使用contacts表中的ID更新它:

UPDATE tempTable JOIN contact ON
  tempTable.name = contact.name
  AND tempTable.phone = contact.phone
  AND tempTable.address = contact.address
 SET tempTable.contactID = contact.contactID

然后插入供应商,就像我们插入联系方式一样:

INSERT INTO VENDOR (companyName, contactID) (SELECT company, contactID FROM tempTable);