很抱歉我之前不太清楚。我这次会尽量提供尽可能多的信息。
我在一个文件夹中有8000 XML
个文件,我从MySQL中提取数据并在MySQL中填充我的数据库。问题是我一次不能插入超过4,000条记录。
有些成员建议我在几个文件夹之间拆分文件。使用该方法,我应该能够毫无问题地插入所有8,000个文件中的数据。
由于我使用opendir
和readdir
打开并读取该唯一文件夹中的8,000个文件,如果我在两个文件夹之间拆分文件,我是否还应该坚持opendir
和{{ 1}?
如果是的话,当我必须为多个文件夹执行此操作时,我应该如何在php中编写?有没有更好的方法一次从8,000 readdir
个文件中读取和提取数据而不将它们分成几个文件夹?
再次感谢您的时间
答案 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