在PHP中,我從URI中提取大量JSON數據,然後通過內置的json_decode
函數將其序列化爲關聯的PHP數組。通過PHP批量插入MySQL
然後,創建一個磁盤陣列:通過JSON關聯數組
$inserts = array();
我循環,增加一個新的鍵/值對我$inserts
陣列JSON數組中的每一項:
foreach($JSON_data as $key => $value) {
$inserts[] = "(".mysql_real_escape_string($value["prop1"]).","
.mysql_real_escape_string($value["prop2"]).","
.mysql_real_escape_string($value["prop3"]).")";
}
mysql_query("INSERT INTO `MyTable` (`col1`,`col2`,`col3`) VALUES ".implode(",",$inserts));
:
然後,我簡單地通過內爆我已經制備的插入執行批量插入10
無論如何,我發現不再建議使用mysql_*
家族。所以我想知道這種類型的模式是如何用預先準備好的語句來完成的,還是使用新的可接受的結構?我的顧慮是消除SQL注入,並且儘可能快地將MySQL更新爲,同時打開少於10個連接(最好是1個)。此外,要儘可能簡單快捷。
或者,如果有新模式或首選方法來執行這種批量交易。
順便說一句,如果你想真的* *快速插入'LOAD DATA INFILE'是很難被擊敗。雖然我不會在你的情況下提出這個建議(除了其他任何東西,如果你將數據作爲JSON提取,它可能不會那麼大),但是值得注意的是,如果你需要在MySQL中插入許多兆字節/千兆字節,一旦。 –
請參閱http://pastebin.com/28cSmi2C。我修改了下面提到的類來在一個查詢中插入多行(執行語句)。 – whitewalker