就像其他人说的那样,你将不得不做一点点的转换来做你所要求的。幸运的是,让PHP遍历数据并为您完成大部分工作并不难。这是一个快速而肮脏的尝试:
// MySQL table's name
$tableName = 'my_table';
// Get JSON file and decode contents into PHP arrays/values
$jsonFile = '/path/to/file.json';
$jsonData = json_decode(file_get_contents($jsonFile), true);
// Iterate through JSON and build INSERT statements
foreach ($jsonData as $id=>$row) {
$insertPairs = array();
foreach ($row as $key=>$val) {
$insertPairs[addslashes($key)] = addslashes($val);
}
$insertKeys = '`' . implode('`,`', array_keys($insertPairs)) . '`';
$insertVals = '"' . implode('","', array_values($insertPairs)) . '"';
echo "INSERT INTO `{$tableName}` ({$insertKeys}) VALUES ({$insertVals});" . "\n";
}
这将吐出一系列 INSERT INTO MY_TABLE
(...)值 (...);SQL 语句,您可以将其保存到.sql文件并导入到 MySQL 中。使用此方法,每个 INSERT 可以具有不同的列,而不会引起问题。
注意:addslashes() 不是一种非常安全的方法,像real_escape_string()这样的东西会更好,但是假设你的JSON数据是可信的,这在没有数据库连接的情况下工作。