将从excel到mysql的拆分值存储在两行中
我有一张excel表格,上面有以下列将从excel到mysql的拆分值存储在两行中,mysql,Mysql,我有一张excel表格,上面有以下列 Sam/Simon Date Store Customer name Original Order Number Simon 09/11/2014 Bristol Cr Car 20089691/ 26089697 我需要将这些信息存储在表中的两行中 Simon 09/11/2014 Bristol Cr Car 20089691/ Simon 09/11/2014 Bristol Cr
Sam/Simon Date Store Customer name Original Order Number
Simon 09/11/2014 Bristol Cr Car 20089691/ 26089697
我需要将这些信息存储在表中的两行中
Simon 09/11/2014 Bristol Cr Car 20089691/
Simon 09/11/2014 Bristol Cr Car 26089697
我需要知道桌子的结构。将结果中以逗号分隔的值从一列拆分为两行,并将其从excel导出到mysql
实际的表结构如下所示
CREATE TABLE "tblOrderR" (
"intOrderRemedialId" int(10) unsigned NOT NULL AUTO_INCREMENT,
"intOrderId" int(10) unsigned NOT NULL,
"intOrderRemedialGivenPence" int(10) unsigned NOT NULL,
"intRequestedById" smallint(5) unsigned DEFAULT NULL,
"intAuthorizedById" smallint(5) unsigned DEFAULT NULL,
PRIMARY KEY ("intOrderRemedialId"),
KEY "tblOrderRemedial" ("intOrderId"),
KEY "tblOrderRemedial_ibfk_2" ("intRequestedById"),
KEY "tblOrderRemedial_ibfk_3" ("intAuthorizedById"),
CONSTRAINT "tblOrderRemedial_ibfk_1" FOREIGN KEY ("intOrderId") REFERENCES "tblOrder" ("intOrderId"),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Order Remedial Information';
一种方法是: 1使用将原始订单号Excel列拆分为两个单独的列 2以csv格式保存数据 3将数据加载到如下所示的暂存表中
samSimon,date,store,customerName,originalOrder1,originalOrder2
4在最终表格中运行两个insert:一个带有originalOrder1,另一个带有originalOrder2。例如:
insert into tblOrderR (columns)
select samSimon,date,store,customerName,originalOrder1 from stagingTable;
insert into tblOrderR (columns)
select samSimon,date,store,customerName,originalOrder2 from stagingTable;
非常伪代码的答案,但希望你得到它的要点 只需导入两次
第一次使用示例代码时,您可能需要调整其中一项:
LOAD DATA LOCAL INFILE '/path/to/file/excel.csv'
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n'
(column1, column2, @my_variable)
SET column3 = SUBSTRING(@my_variable FROM 1 FOR LOCATE('/', @my_variable));
第二次:
LOAD DATA LOCAL INFILE '/path/to/file/excel.csv'
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n'
(column1, column2, @my_variable)
SET column3 = SUBSTRING(@my_variable FROM LOCATE('/', @my_variable) + 1);
相关手册页:
最后一个问题是什么?从excel导入时,一行中有20089691/26089697,如何将其导出为两行。如何忽略mysql插入脚本中的拆分值行。