如何解析CSV并导入到MYSQL问题

时间:2015-07-22 17:35:16

标签: mysql excel csv phpmyadmin

我真的被困在这一刻..我搜索和研究,我没有发现任何类似的东西,所以也许我想要的是不可行的。

我有一个这种格式的.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 |       |      |        |
----------------------------------

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

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

因此,我想要使用的代码是(在用逗号分隔的csv之后)以下代码:

但重点是我只想谈谈以下事项:

  • “信息”表:name1,info1,info2,info3。
  • “联系”表:name1,address,phone1。

与“信息”表

相关
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);

当我填充表格时没关系,因为我只需要在行的开头添加一个' - ',我想填入表中(包含非空字段的行)。 / p>

与“联系”表相关:

这很困难,因为如果我只想要接触列,我将不得不添加一些符号然后操作。好吧,我想在name1的开头添加'*'(例如),在phone1的末尾添加另一个'*'来定义LINE的边界。但是我想要定义字段,这将是一个';'同样。但是,LOAD DATA INFILE算法也采用空字段。而我只想采用包含与“空字符串”/“null”/不同的字段。所以问题是我是否能够说些什么来避免空字符串。因为正如我在MySQL DOC中所读到的那样:

  

空字段值的解释与缺少的字段不同:

     

对于字符串类型,该列设置为空字符串。

     

对于数字类型,该列设置为0.

     

对于日期和时间类型,该列设置为>类型的相应“零”值。请参见第11.3节“日期和时间类型”。

但它并没有说出什么可以避免它。 (我的意思是,如果是一个空值,则传递下一个字段并再次评估,直到找到非空值)

我问的是,因为我的面对它的想法它会填充这样的一行: Name1,null,null,null,address1,null,null,null,phone1等。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

现在只关注联系人,如果您的Excel电子表格包含4列,columnA对所有行N采取行动,该怎么办?如果您希望最终将其更改为真实表格,请将其更改为Y

您的csv现在有4列:

行动,姓名,地址,电话

load data infile进入工作表。现在您已将数据输入(有些并非实际需要),而insert into select其中action ='y'将完成此操作,从工作表实际表格 >