【问题标题】:import multiple csv to mongodb将多个csv导入mongodb
【发布时间】:2017-10-05 01:48:45
【问题描述】:

我知道如何在 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}`);
        }
    });

【问题讨论】:

    标签: node.js mongodb csv


    【解决方案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.
    

    local 是要导入的 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}`);
    }});
    

    【讨论】:

    • 谢谢。因为我对此还是很陌生。我把这个放在哪里了?进入 app.js?我需要包括什么吗?更详细的程序将不胜感激。为麻烦道歉。谢谢。
    • 你好,我把bash直接放到C盘下的“te”文件夹里,把CSV文件也放进去。编辑后的代码是我所做的。但是,没有任何反应。有什么问题吗?
    • 您好,很抱歉给您添麻烦了。你介意再给我一些建议吗?谢谢。
    • 添加了未经测试的 Windows 设置。
    【解决方案2】:

    这是它的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)
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 2014-11-02
      • 2017-01-11
      • 2023-02-01
      • 2013-03-18
      • 1970-01-01
      • 2015-11-21
      相关资源
      最近更新 更多