如何将文件夹中的所有文件导入MongoDB?

时间:2017-01-24 12:34:05

标签: mongodb csv windows-10

我有一个包含CSV个文件的文件夹。我想将所有CSV的数据上传到MongoDB。我尝试了以下命令:

for i in *.csv; do mongoimport -d mydatabase -c ${i%.*} --type csv --file $i --headerline ; done

我已修改它以适应我的情况。修改后的命令如下:

for i in "C:\Users\lenovo-pc\Desktop\Testing sample csv\*.csv"; do mongoimport -d Better -c TESTCSV --type csv --file $i --headerline ; done

但它正在给error: i was unexpected at this time. 我想知道如何一次上传文件夹中的所有CSV。我不想一个一个地上传它们。请帮助。

2 个答案:

答案 0 :(得分:2)

试试这个:

for %i in (*.csv) do mongoimport -d Better -c TESTCSV --type csv --file "%i" --headerline

确保从存在*.csv文件的目录中运行此命令。

答案 1 :(得分:1)

我已经为Windows创建了这个脚本,它导入了同一文件夹中的所有CSV,并使用相应CSV的名称命名每个集合。

您需要在.bat文件中复制这些行,然后根据需要编辑变量MONGO_HOME和db:

TITLE MongoDB CSV Importer
SET "MONGO_HOME=C:\Program Files\MongoDB\Server\3.6"
SET db=datasets

for %%v in (*.csv) do "%MONGO_HOME%\bin\mongoimport.exe" -d %db% -c %%~nv --type CSV --file %%v --headerline
TITLE "Import completed!"
PAUSE

对Linux shell脚本(.sh)的作用相同:

db="datasets"

for entry in *".csv"
do
  coll=$(echo "$entry" | cut -f 1 -d '.')
  echo $name
  mongoimport -d $db -c $coll --type CSV --file $coll".csv" --headerline
done
echo "end of import."

希望这有帮助