2011-05-19 83 views
2

我在XLS文件上有这个数据。 XLS文件混乱了很多我不需要的数据。我将清理文件,然后重新排列。如何准备数据并将其插入到Mysql数据库中?

我有这样的事情:

Level - Code - Description 
1  A  'foo foo' 
2  12331 'bar bar' 
3  13123 'bla bla' 
4  21321 'plim bar' 
5  12111 'foo plim' 
5  12111 'plim bla' 
5  12111 'bla plim' 
1  B  'bla bar' 
n  ...  ... 

级别定义层次中的位置,像1是一个顶级层次。 5是最低的。

我将利用邻接列表模型来存储这些信息。 所以我相信我将不得不将其存储这样的:

id - description - parent_id 
1 'foo foo'  NULL 
2 'bar bar'  1 
3 'bla bla'  2 
4 'plim bar'  3 
5 'foo plim'  4 
6 'plim bla'  4 
7 'bla plim'  4 
8 'bla bar'  NULL 
n  ...   ... 

什么是最好的(最快,最容易的)方法插入这样的信息? 我应该转换为CSV吗?我应该如何格式化XLS文件,以便通过维护层次来插入这些信息?

XLS文件中有9000行,我很乐意避免这样做!

为了成功导入这些数据,我们应该考虑哪些方法?

更新: 我有这个mysqlworkbench软件...我在Ubuntu和这里所有的开源。

非常感谢。

回答

1

您可以使用navicat来进行导入,免费版本会做得很好。

+0

我使用mysqlworkbench也许它做同样的...我承认,我还没有看过它呢... – MEM 2011-05-19 09:59:57

+0

@mem,我试图使用mysqlbench,它只是不适合我,但navicat已经拯救了我的生命无数次,试试:) – Aviatrix 2011-05-19 10:19:55

2

使用LOAD命令,类似于csv的数据(如果可能的话)。

下面是一个例子:

LOAD DATA INFILE 'path-to-your-data-file' 
INTO TABLE <your-table> 
CHARACTER SET latin1 
FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
IGNORE 1 LINES 
(col1, col2,..., coln) 
; 

其中IGNORE 1 LINES指在数据文件中的列标题将被忽略,并且(col1, col2,..., coln)是数据库列使用。

你有很多其他选择提供给您(参见http://dev.mysql.com/doc/refman/5.1/en/load-data.html)和LOAD据说是高达20倍的速度那么INSERT大数据负载(根据http://dev.mysql.com/doc/refman/5.1/en/insert-speed.html)。

+0

因此,我必须首先将xls转换为csv文件,并且在该过程中,我应该选择\ t和\ n和''某处?里尔Office Calc应该这样做...? – MEM 2011-05-19 09:58:47

+0

如果你有MySQL 5.5,你可以使用LOAD XML(http://dev.mysql.com/doc/refman/5.5/en/load-xml.html)。否则,你将不得不自己转换数据。 – davek 2011-05-19 10:07:44

相关问题