如何准备文件并将数据插入Mysql DB?

时间:2011-05-19 09:36:31

标签: mysql database bulkinsert

我在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上,所有的开源都在这里。

提前多多感谢。

2 个答案:

答案 0 :(得分: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的速度比INSERT快20倍(根据http://dev.mysql.com/doc/refman/5.1/en/insert-speed.html })。

答案 1 :(得分:1)

您可以使用navicat进行导入,免费版本也可以。