как отформатировать CSV для типа даты mongoimport

#mongodb #date #mongoimport

#mongodb #Дата #mongoimport

Вопрос:

Я импортирую несколько CSV-файлов и использую то, что должно быть официальным форматом даты. Но получение этой ошибки:

 could not parse token '2018-01-01 03:00:00' to type date
  

мои данные выглядят так:

 17544,1,2018-01-01 00:00:00,1,1.0
17545,1,2018-01-01 01:00:00,1,1.0
17546,1,2018-01-01 02:00:00,1,1.0
17547,1,2018-01-01 03:00:00,1,2.0
  

мой формат выглядит так, как показано в примерах из документации
https://docs.mongodb.com/v4.2/reference/program/mongoimport /

 mongoimport --type csv -d databoard -c samples 
    --fields="row.int32(),stationID.int32(),ts.date(),speciesID.int32(),counts.int32()" 
    --columnsHaveTypes --drop data/raw/sample2.csv
  

Что я делаю не так?

Я также не уверен, как использовать --headerFields with --fields , поэтому я удалил поля из первой строки даты.

введите описание изображения здесь

Ответ №1:

согласно документам, вы должны указать аргумент в date, который указывает формат даты

 mongoimport --type csv -d databoard -c samples 
    --fields="row.int32(),stationID.int32(),ts.date(2006-01-02 15:04:05),speciesID.int32(),counts.int32()" 
    --columnsHaveTypes --drop data/raw/sample2.csv
  

Комментарии:

1. Всем этим хорошим людям, которые задавались вопросом, могут ли они изменить эту нелепую произвольную фиктивную дату в заголовке, ответ… не совсем . Вы можете попробовать, но большинство попыток завершатся неудачей. Мне удалось изменить секунды на: 04, : 05 или : 06.

Ответ №2:

Вы можете напрямую использовать первую строку вашего CSV-файла для хранения ваших типов дат. В этом случае вы захотите использовать эту --headerline опцию.

Первая строка будет: row.int32(),stationID.int32(),ts.date(2006-01-02 15:04:05),speciesID.int32(),counts.int32()

Кроме того, помните, что __нелепая произвольная 2006-01-02 15:04:05 или около того (более или менее 1 секунды) дата должна соблюдаться…