将多个csv导入mongodb

时间:2017-10-05 01:48:46

标签: node.js mongodb csv

我知道如何在shell / cmd提示符中使用mongoimport或使用3T studio等GUI导入CSV文件作为集合。 每一行都是一个标题为标题的文件。

例如csv文件名Data.csv 标题和内容如下:

Example

如果仅使用一个文件,可以使用上述方法轻松完成。

我可以知道有没有办法可以导入多个文件(几百个)。 - 将每个文件分隔为一个集合 - 使用文件名作为集合名称 - 将所有内容导入集合下的每个文档

最好是可以使用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}`);
        }
    });

2 个答案:

答案 0 :(得分: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}`);
}});

答案 1 :(得分:1)

这是它的python版本。

import os
import subprocess

# directory of files
dir_files = 'C:\data'
# create list of all files
_, _, fns = next(os.walk(dir_files))
files = [os.path.join(dir_files, fn) for fn in fns]
# mongotool address
mongotool = r'C:\Program Files\MongoDB\Server\4.4\bin\mongoimport.exe'
# name of mongodb database
mydatabase = 'mydatabase'
# name of mongodb collection
mycollection = 'mycollection'
# import all files to mongodb
for fl in files:
    commands =[mongotool, '--db', mydatabase,
               '--collection', mycollection,
               '--file', fl,
               '--type', 'tsv',
               '--headerline']
    subprocess.Popen(commands, shell=True)