mongoDB로 Excel 파일(XLSX)을 가져오는 방법
저는 MongoDB에 XLSX 형식으로 제공할 입력 데이터 세트를 가지고 있습니다.MongoDB에 입력으로 엑셀 파일을 가져오려면 어떻게 해야 합니까?
xlsx 파일을 MongoDB에 입력으로 가져올 수 있는 플러그인이 있습니까?
XLSX 파일을 MongoDB로 직접 가져올 수 없습니다.그러나 Excel 스프레드시트를 사용하여 수행할 수 있는 작업은 CSV 파일로 저장한 다음mongoimport
MongoDB로 가져올 수 있습니다.다음에 대한 설명서를 찾을 수 있습니다.mongoimport
그러나 어떤 경우에도 실행해야 하는 명령은 다음과 같아야 합니다.
mongoimport --db myDb --collection myCollection --type csv --headerline --file /path/to/myfile.csv
위의 명령에서,--headerline
flag는 파일의 첫 번째 줄에 필드 이름이 포함되어 있음을 나타냅니다.필요에 따라 다른 많은 옵션을 사용할 수 있습니다.이러한 내용은 설명서에 강조되어 있습니다.
저는 "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");
})
이 코드를 사용하여 한 엑셀에서 여러 장의 데이터를 한 번에 mongodb에 업로드할 수 있습니다.
첫 번째 행(예: "0" 행)은 해당 열의 열 제목 및 휴식 데이터로 간주됩니다.
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();
mongoimport -d admin -c Mongocsv --type csv --file Mongocsv.csv --헤더라인
연결 대상: 127.0.0.1 가져온 5개 개체
몽고
adminswitched를 db admin으로 사용
db.Mongocsv.find()
Pymongo 확장 유틸리티 패키지가 있습니다. 모듈 중 하나는 정확하게 이 작업을 수행하고, excel 파일을 mongo 컬렉션으로 가져오거나 전체 excel 워크북을 mongo 데이터베이스로 가져옵니다.설명서 및 예제는 다음에서 확인할 수 있습니다.
그리고 'pip install mongoUtils'로 라이브러리를 설치할 수 있습니다.
- xldr 라이브러리도 설치해야 합니다.
- 고지 사항:저는 이 도서관의 저자입니다.
DB 서버가 로컬이 아닌 경우 DB 이름, 컬렉션 이름과 함께 호스트, 포트, 사용자 이름, 비밀번호를 지정해야 합니다.
mongoimport --host <hostname>:<port> --username <username> --password <password> --db <db name> --collection <collection name> --type csv --headerline --file /path/to/myfile.csv
Apache POI 라이브러리(https://poi.apache.org/) 를 사용하여 Java 코드를 작성하면 Excel 파일 내용 로드를 처리할 수 있습니다.도서관은 엑셀을 포함한 MS 오피스 애플리케이션 데이터를 활용할 수 있도록 개발되었습니다.
저는 최근에 당신이 MongoDB 데이터베이스에 엑셀 파일을 로드할 수 있도록 도와주는 기술을 기반으로 애플리케이션을 만들었습니다.
이 응용 프로그램은 http://www.abespalov.com/ 에서 사용할 수 있으며 Windows에서만 테스트되지만 Linux에서도 작동해야 합니다.응용프로그램은 필요한 컬렉션을 자동으로 만들고 컬렉션을 Excel 파일 콘텐츠로 채웁니다.여러 파일을 병렬로 내보낼 수 있습니다.파일을 CSV 형식으로 변환하는 단계를 건너뛸 수 있습니다.애플리케이션은 xls 및 xlsx 형식을 처리합니다.
전체 적용 단계는 다음과 같습니다.
Excel 파일 내용을 로드합니다.파일 확장명에 따른 코드는 다음과 같습니다.
fileExtension = FilenameUtils.getExtension(inputSheetFile.getName());
if (fileExtension.equalsIgnoreCase("xlsx")) {
workbook = createWorkbook(openOPCPackage(inputSheetFile));
} else {
workbook = createWorkbook(openNPOIFSFileSystemPackage(inputSheetFile));
}
sheet = workbook.getSheetAt(0);
MongoDB 연결을 설정합니다.MongoClient를 사용합니다.URI 라이브러리;
MongoClientURI mongoClientURI = new MongoClientURI(
"mongodb://" + dbUser + ":" + dbPassword + "@" + dbServer
+ ":" + dbPort + "/" + dbDatabase);
excel2db.mongoClient = new MongoClient(mongoClientURI);
시트 위에서 반복하고 집합에 행을 삽입합니다.다음은 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);
}
}
여기에서 Postgres(https://github.com/palych-piter/Excel2DB) 로 Excel을 내보내기 위해 만든 응용 프로그램의 모든 Java 코드를 찾을 수 있습니다.
언급URL : https://stackoverflow.com/questions/25241500/how-to-import-excel-file-xlsx-to-mongodb
'programing' 카테고리의 다른 글
javax 유효성 검사 제약 조건이 Spring Boot에서 작동하지 않음 (0) | 2023.08.05 |
---|---|
Oracle 내보내기 덤프 파일의 내용 나열 (0) | 2023.08.05 |
MariaDB 계산된 필드에 고유 제약 조건 추가 (0) | 2023.08.05 |
선택한 항목을 맨 위에 표시하려면 RecyclerView 스크롤 (0) | 2023.08.05 |
AJAX 리디렉션 딜레마, 리디렉션 URL을 가져오는 방법 또는 리디렉션 요청에 대한 속성을 설정하는 방법 (0) | 2023.08.05 |