我正在尝试使用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
我发布了this,this和this帖子。他们都说我应该将批量大小限制为低于默认值(10000)。但我的csv文件只有一行。
我的CSV FILE
我在终端试过同样的东西。我使用的是MongoDB版本3.0.9
编辑:
我正在使用django将csv文件导入mongodb集合。我将文件保存到目录中。然后使用mongoimport
命令导入文件。
我可以轻松保存文件,我可以在我的目录中看到它。我确认mongod正在运行。错误日志来自django开发服务器。
此代码在另一个在相同版本上运行的项目中运行良好。
当我从终端运行相同的mongoimport命令时,我得到了完全相同的错误。我在mongo shell中并排运行了一个阅读声明,它运行良好。
答案 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
接受的格式。