Как экспортировать базу JSON в MYSQL?

Есть доступ к БД по API, данные из которой сохраняются в Json файл
$pvoStorage = new \API\Parser\Json([
    'filename' => $pathData . 'pvo.txt'
]);

в виде:
{"id":4,"name":"Афганистан","full_name":"Исламское Государство Афганистан","alpha2":"AF"}
{"id":8,"name":"Албания","full_name":"Республика Албания","alpha2":"AL"}
{"id":10,"name":"Антарктида","full_name":"","alpha2":"AQ"}
{"id":12,"name":"Алжир","full_name":"Алжирская Народная Демократическая Республика","alpha2":"DZ"}
{"id":16,"name":"Американское Самоа","full_name":"","alpha2":"AS"}
{"id":20,"name":"Андорра","full_name":"Княжество Андорра","alpha2":"AD"}

Необходимо экспортировать эту БД в mysql и обновлять раз в сутки. Размер БД 10Гб+.
Вопрос как настроить сохранение в БД MySQL? Понимаю как отправлять определенные значения в ячейку, но как отправлять блоки?
Ясно что необходимо создать таблицу ( id, name, full_name, alpha2), но как отправлять туда данные?
Буду рад какому то примеру на основании которого можно разобраться в вопросе.
Спасибо.
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 2
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
По опыту для таких объёмов самый быстрый вариант будет импорт данных из CSV-файла
dev.mysql.com/doc/refman/5.0/en/load-data.html

Примерный синтаксис SQL-запроса. Меняете под себя.
LOAD DATA LOCAL INFILE '{$csv_file}'
INTO TABLE `{$table_tmp}`
FIELDS TERMINATED BY ','
ENCLOSED BY '\"'
LINES TERMINATED BY '\\n'
IGNORE 1 ROWS;


Вам нужно лишь написать скрипт который преобразовывает json документ в csv файл
И затем импортите этот CSV через запрос приведённый выше.
Порядок колонок в csv-файле должен соответствовать порядку колонок в таблице в БД.
Ответ написан
1. не экспорт, а импорт
2. гуглите (яндексите) import json to mysql (есть море информации)
3. если импортировать записи как в примере в простую таблицу в новую БД, то проще и быстрее как уже говорили выше - загружать напрямую в базу из CSV файла, а json конвертнуть в CSV при помощи sed например (одной строчкой)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы