2015-07-22 2 views
1

Я использую mongoimport для импорта CSV-файла. Файл csv содержит текст с вложенными двойными кавычками во второй строке.Как импортировать данные, содержащие двойные кавычки в mongodb, используя mongoimport?

"id","text" 
"1","This is text" 
"2","\"This is quoted text\"" 

Это должно быть импортировано как две строки со второй строкой, включая начальную и конечную цитаты как часть текста. Однако mongoimport отвечает:

c:\mongoimport -d testdb -c testtb --headerline --type csv --drop --file c:/temp1.csv 
connected to: localhost 
dropping: testdb.testtb 
Failed: read error on entry #2: line 3, column 6: extraneous " in field 
    imported 0 documents error "read error: bare " in non-quoted field imported 0 documents. 

Как импортировать данные в формате CSV, содержащий двойные кавычки внутри поля в кавычках? Есть ли другой способ спасения?

Мое окружение основано на Windows.

ответ

3

Существует ссылка в документации Mongoimport к этому, здесь https://docs.mongodb.org/v3.0/reference/program/mongoimport/#cmdoption--type

Парсер csv принимает данные, соответствующие RFC RFC 4180. Как результат , обратная косая черта не является допустимым символом эвакуации. Если вы используете двойные кавычки, чтобы заключать поля в CSV-данные, вы должны избежать внутренних двойных кавычек, добавив еще одну двойную кавычку.

Итак, чтобы сделать вещи ясно: вместо того, чтобы избежать двойные кавычки с обратной косой черты, что вам нужно, чтобы избежать двойной кавычки с другой двойной кавычки, то в результате вы должны иметь две двойные кавычки.

3

Выяснил ответ. . Вместо того, чтобы \», CSV-файлов с помощью„“, как бежал в два раза котировки Так что пришлось изменить линию два следующим образом:.

"2","""This is quoted text""" 

Теперь mongoimport работал отлично

Я понял это с помощью Excel, чтобы сохранить строка в кавычках в формате CSV. Результирующий файл используется три кавычки строки текста.