我将此数据保存在 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,并且这里都是开源的。
提前非常感谢。
最佳答案
如果可能的话,使用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)。
关于mysql - 如何准备文件中的数据并将其插入到 Mysql DB 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6056639/