【问题标题】:Mongodb - Mongoimport error invalid characterMongodb - Mongoimport错误无效字符
【发布时间】:2015-06-16 14:11:59
【问题描述】:

我尝试使用 mongoimport 导入一个简单的 json 文件,但出现以下错误

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

示例json文件如下:

      {  
         "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
      }

我在这里做错了吗?

【问题讨论】:

  • 您的样本中似乎没有显示非“UTF-8”字符

标签: mongodb


【解决方案1】:

我能够侥幸使用--jsonArray 标签,提供文件完整路径,并修改它,在开头和结尾添加括号,

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

mongoimport --db myCoolDb --collection myCoolColl --file /path/to/my/imported/file.json --jsonArray

【讨论】:

  • fyi --jsonArray 仅限于 16 MB 或更小的导入。
【解决方案2】:

关于非“UTF-8”字符的评论很有帮助。

在 Mac 中使用 textedit 创建 json 文档似乎存在问题。我找不到这些非 UTF-8 字符,但我在 mac shell 中使用 vi test.json 创建了相同的文件。我粘贴了内容,保存了文件并使用了 mongoimport。现在可以了。

谢谢

【讨论】:

  • 遇到了同样的问题 - 最终以崇高的文本创建了 json 文档 - 错误已解决。
  • 在没有 BOM 的情况下编码 UTF-8 对我有用 stackoverflow.com/questions/2223882/…
  • 将您的对象转换为数组,然后在 mongoimport url 的末尾使用 --jsonArray--legacy 。工作正常
【解决方案3】:

我在导入 json 数据时遇到了同样的错误。而是使用 mongorestore 命令使用 .bson 数据。

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

如果要删除集合中的现有数据,请使用 --drop

【讨论】:

    【解决方案4】:

    我收到了Failed: error processing document #112783: invalid character ',' looking for beginning of value,因为我的一个对象的格式不正确。注意“psychosurgery”是如何缺少花括号的:

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

    由于我尝试导入的文件中有超过 600,000 行,因此手动查找将非常困难。

    所以我运行了相同的mongoimport 命令,启用了完整的详细信息 (-vvvvv),并且脚本在有问题的对象上停止了。请参阅mongoimport --help 了解更多信息。

    希望这对某人有所帮助。

    【讨论】:

      【解决方案5】:

      我遇到了同样的问题,因为我在 mac 上使用了 texteditor。解决方案是将文件转换为纯文本。确保扩展名以 .json 结尾,因为 texteditor 想要将 .txt 放在末尾。

      【讨论】:

      • 同上,没用,我之前就是这样保存文件的。
      【解决方案6】:

      只需打开一个文本文件,将所有数据复制到新创建的文本文件中。在保存文本文件时,在 Encoding 下拉菜单中选择“UTF-8”选项,然后通过重命名将文本文件更改为 JSON 或 CSV。

      然后照常导入文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-28
        • 1970-01-01
        相关资源
        最近更新 更多