使用 PHP 将 JSON 数据导入数据库 (MySQL)
Import JSON data into database(MySQL) using PHP
我正在 PHP 中编写脚本,直接将数据从 JSON 文件直接导入 MySQL 数据库。我目前的样本数据非常小。我有几个问题。我想在没有外部包的情况下这样做。如果您知道或有代码示例,我可以看看,那将非常有帮助。
- 如何让它处理非常大的数据集?分解成
块?逐行导入?使用 fopen?
- 如果在 运行 期间脚本由于某种原因被中断,是
有没有办法确保它在它离开的地方继续?你会怎么做?
- 如果我想删除具有相同电子邮件的重复项,我应该这样做吗
在导入期间或可能在使用 SQL 查询之后?
- 这也适用于 XML 和 CSV 吗?
数据
[
{
"id":1,
"name":"Mike",
"email":"mike@businessweek.com"
},
{
"id":2,
"name":"Nick",
"email":"nick@businessweek.com"
}
]
$jsondata = file_get_contents('data.json');
$data = json_decode($jsondata, true);
foreach ($data as $row) {
$query = 'INSERT INTO `member` (`name`, `email`) VALUES (?, ?)';
$statement = $pdo->prepare($sql);
$statment->execute([$row['name'], $row['email']]);
}
这可能会被关闭,但为您提供一些信息:
- 分解它的唯一方法是每行有单独的 JSON 个对象,或者单独的 JSON 个对象,或者抓取每 X 行(在您的示例中为 5 行)。然后你可以
fopen
并逐行阅读它。您可以从 {
到 }
(不推荐)。
- 我能想到的唯一方法是使用事务,and/or 跟踪总行数并在单独的数据库中减少每个插入 table。
- 如果您导入整个文件,那么您可以这样做,也许可以使用
array_column
在 email
上重新编制索引,这将删除重复项。如果不是,那么它必须在 SQL. 之后
- 是的,你会这样做,只是解析数据不同。 CSV 将是 fgetcsv or str_getcsv and XML would be Simple XML 或类似的东西。数据在数组数组中后,将相同插入。
我正在 PHP 中编写脚本,直接将数据从 JSON 文件直接导入 MySQL 数据库。我目前的样本数据非常小。我有几个问题。我想在没有外部包的情况下这样做。如果您知道或有代码示例,我可以看看,那将非常有帮助。
- 如何让它处理非常大的数据集?分解成 块?逐行导入?使用 fopen?
- 如果在 运行 期间脚本由于某种原因被中断,是 有没有办法确保它在它离开的地方继续?你会怎么做?
- 如果我想删除具有相同电子邮件的重复项,我应该这样做吗 在导入期间或可能在使用 SQL 查询之后?
- 这也适用于 XML 和 CSV 吗?
数据
[
{
"id":1,
"name":"Mike",
"email":"mike@businessweek.com"
},
{
"id":2,
"name":"Nick",
"email":"nick@businessweek.com"
}
]
$jsondata = file_get_contents('data.json');
$data = json_decode($jsondata, true);
foreach ($data as $row) {
$query = 'INSERT INTO `member` (`name`, `email`) VALUES (?, ?)';
$statement = $pdo->prepare($sql);
$statment->execute([$row['name'], $row['email']]);
}
这可能会被关闭,但为您提供一些信息:
- 分解它的唯一方法是每行有单独的 JSON 个对象,或者单独的 JSON 个对象,或者抓取每 X 行(在您的示例中为 5 行)。然后你可以
fopen
并逐行阅读它。您可以从{
到}
(不推荐)。 - 我能想到的唯一方法是使用事务,and/or 跟踪总行数并在单独的数据库中减少每个插入 table。
- 如果您导入整个文件,那么您可以这样做,也许可以使用
array_column
在email
上重新编制索引,这将删除重复项。如果不是,那么它必须在 SQL. 之后
- 是的,你会这样做,只是解析数据不同。 CSV 将是 fgetcsv or str_getcsv and XML would be Simple XML 或类似的东西。数据在数组数组中后,将相同插入。