Node.js 将多个csv导入mongodb
我知道如何使用shell/cmd提示符中的mongoimport或3T studio之类的GUI将CSV文件作为集合导入。 每一行都是以标题行为标题的文档 例如,csv文件名Data.csv 标题和内容如下: 如果只针对一个文件,则使用上述方法可以非常轻松地完成 我想知道有没有一种方法可以导入多个文件(几百个)。 -将每个文件分隔为一个集合 -使用文件名作为集合名 -将所有内容作为集合下的每个文档导入 最好的方法是可以使用nodejs,但其他方法更受欢迎 多谢各位 更新Node.js 将多个csv导入mongodb,node.js,mongodb,csv,Node.js,Mongodb,Csv,我知道如何使用shell/cmd提示符中的mongoimport或3T studio之类的GUI将CSV文件作为集合导入。 每一行都是以标题行为标题的文档 例如,csv文件名Data.csv 标题和内容如下: 如果只针对一个文件,则使用上述方法可以非常轻松地完成 我想知道有没有一种方法可以导入多个文件(几百个)。 -将每个文件分隔为一个集合 -使用文件名作为集合名 -将所有内容作为集合下的每个文档导入 最好的方法是可以使用nodejs,但其他方法更受欢迎 多谢各位 更新 for i in `l
for i in `ls ~/te/*.csv`; do
./mongoimport -d test $i --type=csv --headerline ;
done
在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:
然后从节点调用它,代码如下:
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中的代码
这是它的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)
非常感谢。因为我对这个还很陌生。我把这个放哪儿了?进入app.js?我需要包括什么吗?更详细的计划将不胜感激。我为麻烦道歉。谢谢。嗨,我把bash直接放在C驱动器下的文件夹“te”中,并把CSV文件也放进去了。编辑的代码就是我所做的。但是,什么都没有发生。有什么问题吗?嗨,很抱歉打扰你。你介意给我进一步的建议吗?谢谢。添加了未经测试的windows安装程序。
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}`);
}});
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}`);
}});
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)