У меня есть следующий пример json-файла, и я пытаюсь заполнить его таблицей MySQL. Поскольку MySQL 5.7 поддерживает json как родной тип данных, я думал, что это не должно быть проблемой, но у javas-валидатора MySQL, похоже, есть проблема с разрывами строк внутри файла. Как только я избавлюсь от всех разрывов строк и напишу свой пример файла в одной строке, он отлично работает.Есть ли способ заполнить таблицу MySQL 5.7 данными из файла json с разрывами строк на Win7?
[
{
"somestuff": [
{
"field1": "val1",
"field2": 17,
"field3": 27,
"field4": 42,
"field5": 73
},
{
"field1": "val2",
"field2": 3,
"field3": 12,
"field4": 13,
"field5": 100
}
],
"field0": "image",
"path": "some path"
}
]
Я знаю, что JSON изначально имеет проблемы с строками, содержащими обратные слэши, но даже при написании любого рода слова вместо пути, то валидатор JSON MySQL до сих пор не может полностью прочитать файл JSon и просто останавливается перед первым Разрыв строки. Я все еще получаю следующее сообщение об ошибке:
Error Code: 3140. Invalid JSON text: "Invalid value." at position 1 in value (or column) '['.
при использовании следующий запрос:
-- create test table for json data
CREATE TABLE IF NOT EXISTS jsons_test(
annotation_id INT AUTO_INCREMENT NOT NULL UNIQUE,
json_data json);
LOAD DATA LOCAL INFILE 'C:\\some\\path\\test.json'
INTO table json_test(json_data);
Я предполагаю, что это, скорее всего, происходит из-за кодирования линии разрыва, но я до сих пор не знаю, есть ли обходной путь для реши это.
UPDATE: Я нашел решение по себе ... Добавляя LINES TERMINATED BY '\\n'
я мог успешно заполнить таблицу с данными JSON и использовать преимущества новой поддержки JSon в MySQL.
Если я что-то отсутствует, 'infile' загрузки данных ожидает CSV. У меня впечатление, что у вас только сырой JSON: -? –
По некоторым сайтам, которые я нашел, это работает. (http://www.databasejournal.com/features/mysql/working-with-json-data-in-mysql-7.html или http://dasini.net/blog/2015/11/17/30-mins -with-json-in-mysql /). Он также отлично работает при удалении всех разрывов строк, оставляя однострочный json-файл. Таким образом, команда не кажется проблемой:/ – user3168930
Кроме того, факт, что я даже получаю сообщение об ошибке, связанное с синтаксисом json, доказывает, что команда sql действительно может читать ее как json-файл и даже пытаться подтвердите его. – user3168930