python mongoimport 错误插入文档失去与服务器的连接

python mongoimport error inserting documents lost connection to server

我正在尝试使用 python os 模块向 mongodb 插入一个 csv 文件,但出现此错误:

2016-03-02T05:25:23.718+0000 connected to: localhost

2016-03-02T05:25:23.731+0000 error inserting documents: lost connection to server

2016-03-02T05:25:23.731+0000 Failed: lost connection to server

2016-03-02T05:25:23.731+0000 imported 0 documents

我的代码是:

def uploadBulkProducts(self, new_products_file):
    with open('new_products.csv','wb') as new_file:
        for chunk in new_products_file.chunks():
            new_file.write(chunk)

    try:
        os.system("mongoimport --db picknbox --collection temp_products --type csv --file new_products.csv --headerline")
        os.remove('new_products.csv')
        return True
    except:
        return False

我读了, this and thispost。他们都说我应该将批量大小限制为小于默认值 (10000)。但是我的 csv 文件中只有 1 行。

我的CSV FILE

我从终端尝试了同样的操作,但还是一样。我正在使用 MongoDB 版本 3.0.9

编辑:

我正在使用 django 将 csv 文件导入 mongodb 集合。我将文件保存到一个目录中。然后使用 mongoimport 命令导入文件。

我可以轻松保存文件,并且可以在我的目录中看到它。我确认 mongod 是 运行ning 。错误日志来自django开发服务器。

此代码在另一个项目中运行良好运行在相同版本上。

另外,当我 运行 从终端输入相同的 mongo 命令时,我得到了完全相同的错误。我 运行 在 mongo shell 中并排读取语句并且它工作正常。

您的 CSV 文件是 UTF-16 格式。在 unix 上,转换内容以允许它作为输入:

iconv -f UTF-16 -t ISO-8859-1 new_products.csv \
   | mongoimport --db picknbox --collection temp_products --type csv --headerline

因此 iconv 实用程序将为您完成此操作,您可以将输出直接通过管道传输到 mongoimport,或者转换为 mongoimport.[=14 接受的格式=]