mongodb - help - mongoimport merge
cómo importar el archivo de excel(XLSX) a mongoDB (7)
En caso de que el servidor de la base de datos no sea local, deberá especificar el host, el puerto, el nombre de usuario y la contraseña junto con el nombre de la base de datos y el nombre de la colección.
mongoimport --host <hostname>:<port> --username <username> --password <password> --db <db name> --collection <collection name> --type csv --headerline --file /path/to/myfile.csv
Tengo un conjunto de datos como entrada que se le dará a MongoDB en formato XLSX. ¿Cómo se supone que debo importar el archivo de Excel como entrada a MongoDB?
¿Hay algún complemento disponible para importar archivos xlsx como entrada a MongoDB?
Hay un paquete de utilidades de extensión pymongo, uno de los módulos hace exactamente esto, importa un archivo excel a una colección de mongo o un libro completo de excel a una base de datos de mongo. Puedes encontrar documentación y ejemplos here :
y puedes instalar la librería con `pip install mongoUtils
- también necesitarás instalar la biblioteca xldr
- descargo de responsabilidad: soy el autor de esta biblioteca
Puede cargar datos de varias hojas de un Excel en mongodb a la vez usando este código.
Su primera fila, es decir, la fila "0", se considerará como título de columna y datos de descanso de esa columna.
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
DB db = mongoClient.getDB("yourdb_name");
System.out.println("Connected to Database successfully");
DBCollection coll = db.getCollection("your_collection name");
System.out.println("Collection your_collection name selected successfully");
DBCollection OR = db.getCollection("Input_Container");
System.out.println("Collection Device_Details selected successfully");
OR.drop();
DBObject arg1 = null;
//coll.update(query, update);
DBCollection OR_UPLOAD =
db.createCollection("Input_Container", arg1);
String path =" your file path";
File myFile = new File(path);
FileInputStream inputStream = new FileInputStream(myFile);
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
int number=workbook.getNumberOfSheets();
System.out.println("NumberOfSheets "+number);
for(int i=0;i<number;i++)
{
XSSFSheet sheet = workbook.getSheetAt(i);
int col_value=sheet.getRow(0).getLastCellNum();
int row_num= sheet.getLastRowNum();
System.out.println("row_num "+row_num);
List<String> DBheader = new ArrayList<String>();
List<String> Data = new ArrayList<String>();
for(int z=1;z<=row_num;z++){
DBheader.clear();
Data.clear();
for(int j=0;j<col_value;j++)
{
if(sheet.getRow(0).getCell(j).toString()!=null || sheet.getRow(0)!=null)
{
String cel_value = sheet.getRow(0).getCell(j).toString();
DBheader.add(cel_value.trim());
}
else{
break;
}
}
for(int k=0;k<col_value;k++){
String data =" ";
if(sheet.getRow(z).getCell(k)!=null)
{
data = sheet.getRow(z).getCell(k).toString();
}
Data.add(data.trim());
}
BasicDBObject doc = new BasicDBObject();
System.out.println("Data.size() "+Data.size());
int l=0;
for(String headers:DBheader)
{
if(l>Data.size()){break;}
doc.append(headers, Data.get(l));
l++;
}
OR_UPLOAD.insert(doc);
}
}System.out.println("File Upload Done");
mongoClient.close();
Puede manejar la carga del contenido del archivo de Excel escribiendo el código Java utilizando la biblioteca de PDI de Apache ( https://poi.apache.org/ ). La biblioteca está desarrollada para trabajar con datos de aplicaciones de MS Office, incluido Excel.
Recientemente he creado la aplicación basada en la tecnología que te ayudará a cargar archivos de Excel en la base de datos MongoDB.
La aplicación está disponible en http://www.abespalov.com/ y probada solo para Windows, pero también debería funcionar para Linux. La aplicación creará automáticamente la recopilación necesaria y completará la recopilación con el contenido del archivo Excel. Puede exportar varios archivos en paralelo. Puede omitir el paso para convertir los archivos al formato CSV. La aplicación maneja los formatos xls y xlsx.
Las etapas generales de aplicación son:
1) Cargar el contenido del archivo de Excel. Aquí está el código dependiendo de la extensión del archivo:
fileExtension = FilenameUtils.getExtension(inputSheetFile.getName());
if (fileExtension.equalsIgnoreCase("xlsx")) {
workbook = createWorkbook(openOPCPackage(inputSheetFile));
} else {
workbook = createWorkbook(openNPOIFSFileSystemPackage(inputSheetFile));
}
sheet = workbook.getSheetAt(0);
2) Establecer la conexión MongoDB. Yo uso la biblioteca MongoClientURI;
MongoClientURI mongoClientURI = new MongoClientURI(
"mongodb://" + dbUser + ":" + dbPassword + "@" + dbServer
+ ":" + dbPort + "/" + dbDatabase);
excel2db.mongoClient = new MongoClient(mongoClientURI);
3) Iterar sobre la hoja e insertar filas en la colección. Aquí hay una pieza de código 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);
}
}
Aquí puede encontrar todo el código Java para la aplicación creada para exportar Excel a Postgres ( https://github.com/palych-piter/Excel2DB ).
Utilicé "fast-csv" para cargar csv en la base de datos mongoDB.
Código de muestra :
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");
})
mongoimport -d admin -c Mongocsv --type csv --file Mongocsv.csv --headerline
conectado a: 127.0.0.1 importado 5 objetos
mongo
uso admin cambiado a db admin
db.Mongocsv.find ()
No puede importar un archivo XLSX directamente en MongoDB. Sin embargo, lo que puede hacer con una hoja de cálculo de Excel es guardarlo como un archivo CSV, luego usar mongoimport
para importarlo a MongoDB. Puede encontrar la documentación para mongoimport
here , pero en cualquier caso, el comando que necesita ejecutar debe tener el siguiente aspecto:
mongoimport --db myDb --collection myCollection --type csv --headerline --file /path/to/myfile.csv
En el comando anterior, el indicador --headerline
indica que la primera línea en su archivo contiene el nombre de los campos. Hay muchas otras opciones que puede usar dependiendo de sus necesidades. Estos se destacan en la here .