Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mongodb - Mongoimport error invalid character

Tags:

mongodb

I tried to import a simple json file using mongoimport and i get the following error

PER-MacBook-Pro:/AJ$ mongoimport --db test --collection samplePM --file /users/AJ/Documents/Development/ETLwork/Dummydata/Penguin_Players.json
2015-06-16T09:53:57.291-0400    connected to: localhost
2015-06-16T09:53:57.293-0400    Failed: error processing document #1: invalid character '\\' looking for beginning of object key string
2015-06-16T09:53:57.293-0400    imported 0 documents

Sample json file is as follows:

      {  
         "position":"Right Wing",
         "id":8465166,
         "weight":200,
         "height":"6' 0\"",
         "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8465166.jpg",
         "birthplace":"Seria, BRN",
         "age":37,
         "name":"Craig Adams",
         "birthdate":"April 26, 1977",
         "number":27
      },
      {  
         "position":"Right Wing",
         "id":8475761,
         "weight":195,
         "height":"6' 2\"",
         "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8475761.jpg",
         "birthplace":"Gardena, CA, USA",
         "age":23,
         "name":"Beau Bennett",
         "birthdate":"November 27, 1991",
         "number":19
      }

Am I doing something wrong here?

like image 339
Ak040 Avatar asked Jun 16 '15 14:06

Ak040


4 Answers

I was able to get away with using --jsonArray tag, giving the file full path, and modified it adding bracket at the beginning and at the end,

[{"my":"json","file":"imported"},{"my":"cool","file":"succeeded"}]

mongoimport --db myCoolDb --collection myCoolColl --file /path/to/my/imported/file.json --jsonArray
like image 127
Ardhi Avatar answered Nov 09 '22 04:11

Ardhi


I was getting Failed: error processing document #112783: invalid character ',' looking for beginning of value because one of my objects was formatted improperly. Notice how "psychosurgery" is missing curly braces:

{
  "word": "psychosurgeons",
  "firstLetter": "p"
}
  " psychosurgery",
{
  "word": "psychosurgical",
  "firstLetter": "p"
}

Since there are over 600,000 lines in the file I'm trying to import, this would have been tough to find manually.

So I ran the same mongoimport command with full verbosity (-vvvvv) enabled, and the script stopped right on the problematic object. See mongoimport --help for more info.

Hope this helps someone.

like image 31
JP Lew Avatar answered Oct 13 '22 19:10

JP Lew


The comment about non "UTF-8" characters was helpful.

It seems like there is a problem with creating json documents using textedit in Mac. I could not find these non UTF-8 characters but i created the same file using vi test.json in mac shell. I pasted the contents, saved the file and used mongoimport. It works now.

Thanks

like image 5
Ak040 Avatar answered Nov 09 '22 02:11

Ak040


I got the same error while importing json data. Instead use the .bson data using mongorestore command.

mongorestore -d <db> -c <collection> <.bson-file>

Use --drop if you want to drop the existing data in the collection.

like image 3
Winter Avatar answered Nov 09 '22 02:11

Winter