从CSV插入多个表

时间:2014-02-13 05:37:02

标签: mysql sql csv associative

我有一个格式如下的CSV:

MasterSKU, Location, Notes, SubSku1, SubSku2, SubSku3, SubSku4, SubSku5, ...

我在MySQL数据库中有两个表,如下所示:

CREATE TABLE `master_sku` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `master_sku` varchar(150) NOT NULL,
  `bin` varchar(150) DEFAULT NULL,
  `note` varchar(250) DEFAULT NULL,
  `createdtime` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;

CREATE TABLE `sub_sku` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `master_sku_id` int(11) NOT NULL,
  `sub_sku` varchar(150) NOT NULL,
  `createdtime` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1;

所以我需要做的是允许用户上传CSV,然后分别将值插入master_sku和sub_sku。有些master_skus不会有子skus,有些会有很多子skus。

是否有办法使用外键同时插入两个表?

我还希望用户能够在以后上传可能与现有master_skus匹配的子skus,并且只插入新的子skus。

1 个答案:

答案 0 :(得分:1)

您无法“同时”插入行,但可以确保master_skus和sub_skus中的行将插入数据库中,否则两者都将失败。这可以使用数据库事务来实现。