Мне нужно экспортировать данные в выбранные таблицы из базы данных MySQL и импортировать их в другую базу данных MySQL с немного другой структурой. Итак, мне нужно изменить данные между экспортом и импортом (а не только имена полей).
Я попытался использовать json_encode и json_decode, и он почти работает, но если все данные не являются чисто utf8, json_encode падает, и utf8_encode не решает эту проблему.
Я рассматриваю CSV, сериализацию и генерацию SQL в PHP. Какой из этих вариантов даст мне самый надежный перевод?
Вероятно, вы могли бы использовать PDO для запроса и создания массива объектов, которые можно напрямую изменить в коде. Затем используйте эти данные для импорта в другую базу данных.
Лучший вопрос, почему UTF-8 не работает для вас. Убедитесь, что вы используете последнюю версию PHP.
Также убедитесь, что вы используете mb_
префиксные функции для поддержки кодировки UTF-8 (или другого многобайтового).
Вы также можете формировать данные во время экспорта, в зависимости от того, как вы выгружаете данные, используя инструкцию SELECT и переупорядочивая столбцы или выборочно опуская некоторые или используя условные выражения для изменения данных. Результатом по-прежнему будет набор строк и столбцов. Пока они соответствуют структуре вашего пункта назначения, вы можете выполнить слепой импорт. Скорее всего, вы используете mysqldump или что-то еще, что не так просто. В зависимости от необходимых изменений вы всегда можете использовать SQL для изменения данных и после повторного импорта.
Поскольку SQL создан для манипулирования данными, это может быть самый простой способ справиться с вещами, а не пытаться анализировать тонны вещей с помощью PHP, пока он находится в дамп-формате.
Моя проблема не была вызвана проблемой с json_encode, как я думал. Вместо этого проблема была неисправным левым соединением.
Таким образом, ответ заключается в том, что все перечисленные методы являются надежными, если ваш запрос сформирован правильно.