【发布时间】:2015-10-12 17:51:45
【问题描述】:
我真的被困在这一刻了..我搜索和研究,我没有找到类似的东西,所以也许我想要的不可行。
我有一个这种格式的 .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 的表。这样,如果我想知道名称的详细信息(在表 info 中),我可以转到另一个表并查看所有值。
于是我研究了如何导入这个xls格式的文件,最佳的解决方案是将xls文件转换为逗号分隔的csv文件。
因此,我想使用的代码是(在转换为逗号分隔的 csv 之后)如下:
但重点是我只想做到以下几点:
- “信息”表:name1,info1,info2,info3。
- “联系人”表:姓名 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 算法也采用空字段。我只想获取包含与“空字符串”/“null”/不同的内容的字段。所以问题是我是否能够说些什么来避免空字符串。因为正如我在MySQL DOC 中看到的那样:
空字段值的解释与缺失字段不同:
对于字符串类型,该列设置为空字符串。
对于数字类型,该列设置为 0。
对于日期和时间类型,该列设置为该类型的相应“零”值。请参阅第 11.3 节“日期和时间类型”。
但它并没有说要避免它。 (我的意思是,如果是一个空值,然后传递下一个字段并再次评估,直到找到一个非空值)
我问这个是因为我的想法是面对它它会像这样填充一行: Name1,null,null,null,address1,null,null,null,phone1 等等。
有什么想法吗?
【问题讨论】:
-
您的 Excel 工作表中是否有 name1,address1,phone1** 3 行?
-
不,只是那个值。这个:|联系方式| col1 |col2 | col3 |是我的 excel 电子表格中的内容。使用“IGNORE 1 LINES”可以避免
标签: mysql excel csv phpmyadmin