2017-10-05 84 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