使用python将文本文件加载到数据库中

时间:2011-09-07 08:12:36

标签: python

我正在尝试将文本文件加载到数据库中。我的文本文件大约是1.6GB。我需要编写一个python脚本来将带有所有标题的文本文件加载到数据库中

关于我如何做到这一点的任何指导原则?

感谢

1 个答案:

答案 0 :(得分:1)

使用python当然是可能的。如果您正在阅读mysql,可以查看mysql-python。读取文本文件,您可以使用file = open('filename','r')和file.readline()来获取每一行并解析它。

但是......使用python会增加额外的开销。如果文本文件是有序的(即每行一个重新排列,每行具有相同数量的列,并且具有一致的分隔符,例如逗号,制表符,分号等),那么最有效的方法是加载它直。在mysql中,你可以这样做:

LOAD DATA INFILE '/folder/input.dat' INTO TABLE destination_table
FIELDS TERMINATED BY ',' (id,field_1,field_2,field_3);

如果您需要对文件进行一些小修改,例如在行的开头或结尾处更改逗号或内容,您可以使用命令行sed(如果您使用的是* nix或osx ...您将会如果你在Windows上必须安装。)

<强>更新

LOAD DATA INFILE将是最快的:http://dev.mysql.com/doc/refman/5.5/en/load-data.html

当你说“文章的开头1.一些文字2.一些文字3.一些文字MAINO”时,是1.,2.,3。和MAINO不同的字段?如果您有两个字段,例如标题和文章,则可以将文本文档格式化为:

This is my header of the article.;;And here is my article, it's a nice
story about programming.
My article goes on for many lines.
And many more.
<==============================================================================>
This is my second article header.;;And here is article 2. It is.
And is.
Etc.
<==============================================================================>

然后,您可以使用LOAD DATA INFILE,如:

LOAD DATA INFILE '/folder/filename.txt' INTO TABLE destination_table
LINES TERMINATED BY '<==============================================================================>'
FIELDS TERMINATED BY ';;' (header,article);