我有一个xls文件的数据。
xls文件有很多我不需要的数据。我会清理文件,然后重新安排。
我有这样的东西:
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和所有的opensource上。
提前多谢了。
最佳答案
如果可能的话,可以使用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
应该比INSERT
快20倍(根据http://dev.mysql.com/doc/refman/5.1/en/insert-speed.html)。