2016-04-18 8 views
2

У меня есть следующий пример 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.

+0

Если я что-то отсутствует, 'infile' загрузки данных ожидает CSV. У меня впечатление, что у вас только сырой JSON: -? –

+0

По некоторым сайтам, которые я нашел, это работает. (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

+0

Кроме того, факт, что я даже получаю сообщение об ошибке, связанное с синтаксисом json, доказывает, что команда sql действительно может читать ее как json-файл и даже пытаться подтвердите его. – user3168930

ответ