2017-10-05 80 views
0

我知道如何使用shell/cmd提示符中的mongoimport或使用GUI(如3T studio)将CSV文件作为集合导入。 每行是一个标题为标题的文档。将多个csv导入到mongodb

例如一个CSV文件名Data.csv headerline和内容如下:

Example

它可以非常容易地用上面的方法来实现,如果它只是一个文件。

我可以知道有没有办法在可以的地方导入多个文件(几百个)。 - 独立的每个文件作为一个集合 - 使用文件名作为集合名称 -Import的所有内容,因为每个文件下的藏品

最好是可以使用的NodeJS,但其他方法都更受欢迎。

谢谢。

更新

for i in `ls ~/te/*.csv`; do 
    ./mongoimport -d test $i --type=csv --headerline ; 
done 

const exec = require('child_process').exec; 
var yourscript = exec('bash mongoin.sh /te', 
    (error, stdout, stderr) => { 
     console.log(`${stdout}`); 
     console.log(`${stderr}`); 
     if (error !== null) { 
      console.log(`exec error: ${error}`); 
     } 
    }); 

回答

1

在bash:

for i in `ls ~/Desktop/*.csv`; do 
    ./mongoimport -d local $i --type=csv --headerline ; 
done 

在批处理:

forfiles /p c:\te /m *.csv /c "cmd /c mongoimport -d local @file --type csv --headerline" 

~/Desktop/*.csv is the folder where the csv files are located. 

而且本地是MongoDB的数据库导入。

集合的名称将由每个csv文件的基本文件名拾取。

把bash代码的内容脚本,说mymongo.sh

for i in `ls $1`; do 
    ./mongoimport -d local $i --type=csv --headerline ; 
done 

然后从节点调用它,用下面的代码:

const exec = require('child_process').exec; 
var yourscript = exec('bash mymongo.sh /Users/niko/Desktop', 
     (error, stdout, stderr) => { 
      console.log(`${stdout}`); 
      console.log(`${stderr}`); 
      if (error !== null) { 
       console.log(`exec error: ${error}`); 
}}); 

或windows,代码mymongo.bat

const exec = require('child_process').exec; 
var yourscript = exec('cmd /c c:/te/mymongo.bat', 
     (error, stdout, stderr) => { 
      console.log(`${stdout}`); 
      console.log(`${stderr}`); 
      if (error !== null) { 
       console.log(`exec error: ${error}`); 
}}); 
+0

谢谢。由于我对此还很陌生。我把这个放在哪里?进入app.js?我需要包括任何东西吗?一个更详细的程序将不胜感激。为麻烦道歉。谢谢。 – SILearner

+0

嗨,我把bash直接放在C驱动器下的文件夹“te”中,并放入CSV文件。编辑后的代码就是我所做的。但是,没有任何事情发生。哪里不对了? – SILearner

+0

嗨,我很抱歉打扰你。你介意给我进一步的建议吗?谢谢。 – SILearner