所以我有一些代码从第三方URL抓取XML文件并将其存储在本地。
function get_file($file, $local_path, $newfilename) {
echo "<br>Attempting message download for $file<br>";
$out = fopen($local_path.$newfilename,"wb");
if ($out == FALSE){
print "File not opened<br>";
exit;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_FILE, $out);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, $file);
curl_exec($ch);
echo "<br>Error is : ".curl_error ( $ch);
curl_close($ch);
}
get_file('URL FOR FILE', '../xml/', 'jobs.xml');
这很好用 - 我可以下载XML文件并在我的xml文件夹中查看 - 大约350mb。
然后尝试将其加载到我的数据库中,如下所示:
$mysqli = new mysqli(CONNECTION DETAILS);
$sql = "LOAD XML LOCAL INFILE '../xml/jobs.xml' REPLACE INTO TABLE jobs ROWS IDENTIFIED BY '<job>'";
// check connection
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
// Run the query
$mysqli->query($sql);
// Close the connection
$mysqli->close();
这部分不起作用...... 问题是,它适用于较小的XML测试文件。
LOAD XML应该能够处理350mb的XML吗?如果是这样,为什么这段代码不起作用?
如果350mb太大,我该怎么做才能将xml数据放入我的数据库(在列等中)。 XML文件有大约130,000个条目。
答案 0 :(得分:0)
我希望mysql / mariadb能够使用流方法处理大数据(大于内存)。但是我不希望它会吃掉任何数据格式。
因此,您有机会必须首先转换XML,或者甚至可以编写自己的应用程序,该应用程序使用流解析器读取文件,然后在数据库上运行适当的SQL语句。