Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将从excel到mysql的拆分值存储在两行中_Mysql - Fatal编程技术网

将从excel到mysql的拆分值存储在两行中

将从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

我有一张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  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插入脚本中的拆分值行。