我真的被困在这一刻..我搜索和研究,我没有发现任何类似的东西,所以也许我想要的是不可行的。
我有一个这种格式的.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之后)以下代码:
但重点是我只想谈谈以下事项:
与“信息”表
相关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等。
有什么想法吗?
答案 0 :(得分:0)
在Excel中,您可以创建两个工作表,第一个包含联系人数据,第二个包含信息数据。这些工作表可以单独导出为csv文件。
答案 1 :(得分:0)
现在只关注联系人,如果您的Excel电子表格包含4列,columnA
对所有行N
采取行动,该怎么办?如果您希望最终将其更改为真实表格,请将其更改为Y
。
您的csv现在有4列:
行动,姓名,地址,电话
您load data infile
进入工作表。现在您已将数据输入(有些并非实际需要),而insert into select
其中action ='y'将完成此操作,从工作表实际表格 >