如何parsingCSV并导入到MYSQL问题

我现在真的被困住了..我search了一下,也没有find类似的东西,所以也许我想要的是不可行的。

我有这种格式的.xls文件

|contact| col1 |col2 | col3 | --------------------------------- |name1 | info1 |info2 | info3 | |address1| | | | |phone1 | | | | | | | | | |name2 | | | | |address2| info1 |info2 | info3 | |phone2 | | | | | | | | | |name_n | info1 | info2| info3 | |addres_n| | | | |phone_n | | | | ---------------------------------- 

所以我想创build一个名为contact的表,另一个名为info。 表联系人将包含id(主键),姓名,地址和电话作为字段。 另一个表(ID为主键),名称(外键),col1,col2和col3。 以这种方式,如果我想知道名称的详细信息(在表信息),我可以去另一个表,看到所有的价值观。

所以我研究了如何导入这个xls格式的文件,最佳的解决scheme是将xls文件转换成以逗号分隔的csv文件。

因此,我正在考虑使用的代码(在转换为以逗号分隔的csv后)如下:

但重要的是我只想要以下几点:

  • “信息”表:名称1,信息1,信息2,信息3。
  • “联系人”表:姓名1,地址,电话1。

有关“信息”表

 LOAD DATA INFILE '/home/username/myfile.csv' INTO TABLE numbers FIELDS TERMINATED BY ';' LINES STARTING BY '-' TERMINATED BY '\r\n' IGNORE 1 LINES (contact,col1,col2,col3); 

填充表格时可以,因为我只需在要填充到表格的行的开始处添加一个“ – ”(包含非空字段的行)。

与“联系人”表相关:

这是困难的,因为如果我只想采取联系的列,我将不得不添加一些符号,然后运作。 那么,我想在name1的开始处添加一个“*”(例如),在phone1的末尾添加另一个用于定义LINE的边界。 但是我也想定义这个领域,这将是一个';' 以及。 但是,LOAD DATA INFILE的algorithm也需要空字段。 我只是想要包含不同于“空string”/“null”/的字段。 所以问题是如果我能说些什么来避免空string。 因为就像我在MySQL DOC中读到的一样:

空的字段值被解释为与缺less的字段不同:

对于stringtypes,列被设置为空string。

对于数字types,该列设置为0。

对于date和时间types,该列被设置为适合于该types的“零”值。 请参见第11.3节“date和时间types”。

但它没有提到避免它。 (我的意思是,如果是一个空值,然后传递下一个字段并再次评估,直到find一个非空值)

我问,因为我面对它的想法它将填补这样的行:Name1,null,null,null,address1,null,null,null,phone1等等。

有任何想法吗?

只关注联系人现在,如果你的Excel电子表格有4列,其中columnA是所有行的N行动。 如果你最终想要真正的表格 ,你可以把它改成Y

您的csv现在有4列:

行动,名称,地址,电话

load data infile工作表中 。 现在你有了你的数据(有些不是真正想要的),并且insert into select地方,action ='y'将把它完成,从工作 表中放到真正的表中

在Excel中,您可以创build两个工作表,第一个包含联系人数据,第二个包含信息数据。 这些表可以分别导出为csv文件。