从多个文件中提取数据

时间:2011-06-28 22:24:27

标签: php mysql xml

很抱歉我之前不太清楚。我这次会尽量提供尽可能多的信息。

我在一个文件夹中有8000 XML个文件,我从MySQL中提取数据并在MySQL中填充我的数据库。问题是我一次不能插入超过4,000条记录。

有些成员建议我在几个文件夹之间拆分文件。使用该方法,我应该能够毫无问题地插入所有8,000个文件中的数据。

由于我使用opendirreaddir打开并读取该唯一文件夹中的8,000个文件,如果我在两个文件夹之间拆分文件,我是否还应该坚持opendir和{{ 1}?

如果是的话,当我必须为多个文件夹执行此操作时,我应该如何在php中编写?有没有更好的方法一次从8,000 readdir个文件中读取和提取数据而不将它们分成几个文件夹?

再次感谢您的时间

3 个答案:

答案 0 :(得分:1)

如果限制是记录数量,那么每个文件夹的文件数量与它有什么关系?您可以读取文件夹,收集要插入的记录并从中构建语句。然后,如果达到4000,请插入语句,然后继续使用其余文件启动新语句。

答案 1 :(得分:0)

1)获取所有文件的列表。 2)遍历列表打开一个文件 3)提取XML节点并执行sql语句 4)关闭文件 5)继续,直到你完成

答案 2 :(得分:0)

//Parse XML for each file here
function parseXML($file) {

}

//Loops through each file in directory
if ($handle = opendir('directoryWithXMLFiles')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            parseXML($file);
        }
    }
    closedir($handle);
}

另一种方法是将数据转换为CSV格式。然后使用MySQL数据加载语法。如果您对其他语言比较熟悉,可以避免使用PHP。

即。

LOAD DATA LOCAL INFILE '/importfile.csv' 
INTO TABLE test_table 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
(field1, filed2, field3);

http://support.modwest.com/content/6/253/en/how-do-i-import-delimited-data-into-mysql.html