web-dev-qa-db-ja.com

Excelファイル(XLSX)をmongoDBにインポートする方法

XLSX形式でMongoDBに入力するデータのセットがあります。 ExcelファイルをMongoDBへの入力としてインポートするにはどうすればよいですか?

MongoDBへの入力としてxlsxファイルをインポートできるプラグインはありますか?

21
SUNDARRAJAN K

XLSXファイルをMongoDBに直接インポートすることはできません。ただし、Excelスプレッドシートでできることは、CSVファイルとして保存し、mongoimportを使用してMongoDBにインポートすることです。 mongoimporthere のドキュメントを見つけることができますが、いずれにしても、実行する必要があるコマンドは次のようになります。

mongoimport --db myDb --collection myCollection --type csv --headerline --file /path/to/myfile.csv

上記のコマンドでは、--headerlineフラグは、ファイルの最初の行にフィールドの名前が含まれていることを示します。ニーズに応じて使用できる他の多くのオプションがあります。これらは documentation で強調表示されています。

50

"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
SUNDARRAJAN K

Pymongo拡張ユーティリティパッケージがあり、これを実行するモジュールの1つで、Excelファイルをmongoコレクションにインポートするか、Excelブック全体をmongoデータベースにインポートします。ドキュメントと例を見つけることができます here
そして、 `pip install mongoUtilsでライブラリをインストールできます。

  • xldrライブラリもインストールする必要があります
  • 免責事項:私はこのライブラリの著者です
1
nickmilon

複数のシートのデータをアップロードする このコードを使用して、一度に1つのExcelから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();
1
Sumeet Gawas

mongoimport -d admin -c Mongocsv --type csv --file Mongocsv.csv --headerline

接続先:127.0.0.1インポートされた5つのオブジェクト

モンゴ

db adminに切り替えたadminを使用します

db.Mongocsv.find()

0
arnav

DBサーバーがローカルでない場合、ホスト、ポート、ユーザー名、パスワードをDB名、コレクション名とともに指定する必要があります。

mongoimport --Host <hostname>:<port> --username <username> --password <password> --db <db name> --collection <collection name> --type csv --headerline --file /path/to/myfile.csv
0
Gokul

Java Apache POIライブラリ( https://poi.Apache.org/ )を使用してコードを記述することにより、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 code:

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にエクスポートするために作成されたアプリケーションのすべてのJavaコード( https://github.com/palych-piter/Excel2DB )を見つけることができます。

0
Andrey