python mongoimport错误插入文件丢失与服务器的连接

时间:2016-03-02 05:34:07

标签: python mongodb csv mongoimport

我正在尝试使用python os模块将csv文件插入mongodb但我收到此错误:

  

2016-03-02T05:25:23.718 + 0000连接到:localhost

     

2016-03-02T05:25:23.731 + 0000错误插入文档:丢失与服务器的连接

     

2016-03-02T05:25:23.731 + 0000失败:失去与服务器的连接

     

2016-03-02T05:25:23.731 + 0000导入0个文件

我的代码是:

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

我发布了thisthisthis帖子。他们都说我应该将批量大小限制为低于默认值(10000)。但我的csv文件只有一行。

我的CSV FILE

我在终端试过同样的东西。我使用的是MongoDB版本3.0.9

编辑:

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

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

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

当我从终端运行相同的mongoimport命令时,我得到了完全相同的错误。我在mongo shell中并排运行了一个阅读声明,它运行良好。

1 个答案:

答案 0 :(得分:1)

您的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接受的格式。