我有一组数据作为输入以XLSX格式提供给MongoDB。我如何将Excel文件作为输入导入MongoDB?
是否有任何插件可用于导入xlsx文件作为MongoDB的输入?
答案 0 :(得分:48)
您无法直接将XLSX文件导入MongoDB。但是,使用Excel电子表格可以将其保存为CSV文件,然后使用mongoimport
将其导入MongoDB。您可以找到mongoimport
here的文档,但无论如何,您需要运行的命令应如下所示:
mongoimport --db myDb --collection myCollection --type csv --headerline --file /path/to/myfile.csv
在上面的命令中,--headerline
标志表示文件中的第一行包含字段的名称。根据您的需要,您还可以使用许多其他选项。这些内容在documentation。
答案 1 :(得分:1)
我使用" fast-csv" 将csv上传到mongoDB数据库。
示例代码:
var csv = require("fast-csv");
csv.fromPath('./test.csv',{headers: true})
.on("data", function(data){
var details = new Details;
details=data;
details.save(function (saveErr, savedetail) {
if (saveErr) {
console.log(saveErr)
}
});
})
.on("end", function(){
console.log("done");
})
答案 2 :(得分:1)
有一个pymongo extention实用程序包,其中一个模块正是如此,将excel文件导入到mongo集合或将完整的excel工作簿导入mongo数据库。
您可以找到文档和示例here:
你可以使用`pip install mongoUtils
答案 3 :(得分:1)
您可以使用此代码一次从一个excel到mongodb upload data of multiple sheets 您的第一行,即“0”行将被视为该列的列标题和休息数据。
{{1}}
答案 4 :(得分:0)
您可以通过使用Apache POI库(https://poi.apache.org/)编写Java代码来处理加载Excel文件内容。该库是为处理包括Excel在内的MS office应用程序数据而开发的。
我最近基于这项技术创建了应用程序,该技术将帮助您将Excel文件加载到MongoDB数据库。
该应用程序在http://www.abespalov.com/下可用,仅针对Windows进行测试,但也适用于Linux。应用程序将自动创建必要的集合,并使用Excel文件内容填充集合。您可以并行导出多个文件。您可以跳过将文件转换为CSV格式的步骤。该应用程序处理xls和xlsx格式。
总体应用阶段是:
1)加载Excel文件内容。以下是取决于文件扩展名的代码:
fileExtension = FilenameUtils.getExtension(inputSheetFile.getName());
if (fileExtension.equalsIgnoreCase("xlsx")) {
workbook = createWorkbook(openOPCPackage(inputSheetFile));
} else {
workbook = createWorkbook(openNPOIFSFileSystemPackage(inputSheetFile));
}
sheet = workbook.getSheetAt(0);
2)建立MongoDB连接。我使用MongoClientURI库;
MongoClientURI mongoClientURI = new MongoClientURI(
"mongodb://" + dbUser + ":" + dbPassword + "@" + dbServer
+ ":" + dbPort + "/" + dbDatabase);
excel2db.mongoClient = new MongoClient(mongoClientURI);
3)迭代工作表并将行插入到集合中。这是一段Java代码:
Row row = (Row) rowIterator.next();
//get column names from a header
short minColIdx = row.getFirstCellNum();
short maxColIdx = row.getLastCellNum();
ArrayList<String> columnNameList = new ArrayList();
String columnName;
logger.info("The table {} is being populated", tableName);
//populate a list of column names
for (short colIdx = minColIdx; colIdx < maxColIdx; colIdx = (short) (colIdx + 1)) {
columnNameList.add(row.getCell(colIdx) == null? "": row.getCell(colIdx).toString());
}
while (rowIterator.hasNext()) {
Document document = new Document();
Row rowData = (Row) rowIterator.next();
numOfProcessedRows++;
for (short colIdx = minColIdx; colIdx < maxColIdx; colIdx = (short) (colIdx + 1)) {
document.put(columnNameList.get(colIdx), rowData.getCell(colIdx).toString());
}
//save the document into a collection, point to the database
MongoCollection mongoCollection = mongoDB.getCollection(tableName);
mongoCollection.insertOne(document);
}
}
在这里,您可以找到为将Excel导出到Postgres(https://github.com/palych-piter/Excel2DB)而创建的应用程序的所有Java代码。
答案 5 :(得分:0)
如果数据库服务器不是本地服务器,则必须指定主机,端口,用户名,密码以及数据库名称,集合名称。
mongoimport --host <hostname>:<port> --username <username> --password <password> --db <db name> --collection <collection name> --type csv --headerline --file /path/to/myfile.csv
答案 6 :(得分:0)
mongoimport -d admin -c Mongocsv --type csv --file Mongocsv.csv --headerline
连接到:127.0.0.1 导入5个对象
蒙戈
使用admin 切换到数据库管理员
db.Mongocsv.find()