проблема, с которой я столкнулась, – это импорт JSON в Mysql. Я искал interwebs, я искал stackoverflow и, возможно, еще больше источников, но не смог найти ни одного правильного решения. Полное раскрытие здесь – я не PHP, SQL, и я не профессионал JSON.
То, что я пытаюсь сделать, довольно просто: импортируйте этот JSON-файл https://developers.facebook.com/tools/explorer/method=GET&path=245226895508982%2Ffeed%3Faccess_token%3D%3Caccess_token%3E= в базу данных Mysql. Я понимаю, что мне нужно так как-то распределить данные JSON в столбцы, а затем упорядочить строки соответствующим содержимым. Мне не нужны все данные, но большинство из них. Затем данные должны быть отражены через поисковый запрос от пользователя.
Мой вопрос кажется довольно простым – как я могу это сделать?
PS: Я попытался преобразовать его в XML, но у меня нет достаточных прав на импорт XML в базу данных SQL. Также конвертер не работал лучше.
Вы можете экспортировать json в csv: http://www.danmandle.com/blog/json-to-csv-conversion-utility/ или https://github.com/danmandle/JSON2CSV
Затем :
LOAD DATA INFILE 'filepath/your_csv_file.csv' INTO TABLE tablename;
Это должно быть хорошо для одного выстрела.
Дополнительная информация о загружаемых данных infile .
Как и другие, вы должны сделать немного конверсии, чтобы делать то, что вы просите. К счастью, это не так сложно, чтобы 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"; }
Это my_table
серию INSERT INTO my_table
(…) VALUES (…); SQL, которые можно сохранить в файле .sql и импортировать в MySQL. С помощью этого метода каждый INSERT может иметь разные столбцы, не вызывая проблем.
Примечание. Addslashes () не очень безопасный способ сделать это, и что-то вроде real_escape_string () было бы предпочтительнее, но это работает без соединения с БД, если ваши данные JSON заслуживают доверия.
Я знаю, что это старый пост, но, возможно, он может помочь кому-то. Я хотел создать ту же базу данных в mysql, что и в mongoDb.
У меня есть действительный json-файл с данными (а не структурой), затем я создал таблицу в mysql с соответствующей структурой (в соответствии с данными json) и импортировал ее через Workbench MySql.
Вот пример с csv, но вы можете загрузить свой json-файл. Просто следуйте указаниям мастера импорта данных в таблицу и убедитесь, что структура действительна, иначе ничего не будет импортировано.