我目前有一个设计糟糕的Access数据库,我正在使用MySQL构建一个新的数据库。在这个Access数据库中,我有一个表,而在MySQL中我有三个表来管理相同的数据。
ERR模型很简单。这是“公司”和“类别”表之间的n:m关系。由于它是一个n:m我有另一个名为“CompanyCategory”的表。
我所做的是从访问中读取数据并将INSERT插入新数据库。
我正在做一个小型的C#程序来做这件事。
因此,我从Access获取公司数据,然后将数据插入新的Company表中。我得到了类别名称,并将其插入到Category表中。为避免重复此表,我在类别名称上有一个UNIQUE INDEX。问题是当我在CompanyCategory表中插入ID时,因为INSERT到Category表中通常返回-1(LastInsertedId方法)。谁能帮我?谢谢。
答案 0 :(得分:0)
好的,据我了解,您的数据看起来像这样:
[olddata]
companyid title categorytitle
1 Acme Teapots
2 Cmea Furniture
3 Meac Cars
4 Eacm Furniture
您想要将其导出,只需将“家具”类别添加到新类别表中一次。以下是新表:
company (companyid,title)
category (categoryid,title)
companycategory (categoryid,companyid)
这应该将数据从'oldtable'传输到theese新表:
INSERT INTO company (companyid,title) SELECT companyid,title FROM olddata
INSERT INTO category (title) SELECT DISTINCT categorytitle FROM olddata
INSERT INTO companycategory (companyid,categoryid) SELECT a.companyid,(SELECT b.categoryid FROM category b WHERE b.title=a.categorytitle) FROM olddata a