데이터베이스(db)

[Pymongo] 엑셀파일 mongodb에 업로드하기(Excel to mongoDB)

끄적끄적아무거나 2022. 3. 4. 08:52
반응형

 

목차

     

     

     

     

     

     

     

     

    [Pymongo] 엑셀파일 mongodb에 업로드하기(Excel to mongoDB)

     

    이번 포스트에서는 엑셀파일에 있는 데이터를 파이썬의 pymongo 라이브러리를 사용해서 Mongodb에 올려보겠습니다. 코드 실행에 앞서 아래 작업들이 선행되어있다고 생각하고 진행하겠습니다.

     

    • 파이썬 설치
    • mongodb 설치 (윈도우 버전, windows)
    • pymongo 라이브러리 설치

     

    mongodb 연결은 localhost로 연결할 것이고 Port는 기본 default에서 변경하지 않은 27017번으로 사용 합니다.

     

     

     

     

     

    [Pymongo] MongoDB에 연결하기

     

    예제 코드>>

    import pymongo
    
    def Connect_DB():
        connect_to = pymongo.MongoClient("localhost", 27017)
        mdb = connect_to.vehicle
        collection = mdb.v_data
        return collection
        
    collection = Connect_DB()

     

    위 코드를 진행하고 에러 메세지가 발생하지 않았다면 정상적으로 연결된 것입니다.

    4번 라인은 localhost 27017포트를 통해 pymongo에 연결하는 명령입니다. 연결된 결과를 connect_to에 저장하였습니다. 

     

    결과>>

    최근 MongoDB Compass라는 소프트웨어를 사용하면 DB를 쉽게 GUI에서 확인 가능 합니다.

    MongoDB Compass는 MongoDB와 함께 자동 설치 되니 별도 설치는 필요 없습니다.

    위에 Databases 항목에서 vehicle이 생겼음을 알 수 있습니다. 

     

     

     

     

     

     

     

    [Pymongo] Excel 파일 읽고 DB에 쓰기

     

    Excel 파일은 openpyxl 이라는 라이브러리를 사용해서 읽어 옵니다. 설치가 되지 않았다면 pip install로 설치하여야 합니다. 

     

    예제 코드>>

    import pymongo
    from openpyxl import load_workbook
    
    def Connect_DB():
        connect_to = pymongo.MongoClient("localhost", 27017)
        mdb = connect_to.vehicle
        collection = mdb.v_data
        return collection
    
    def excel_to_DB(collection):
        wb = load_workbook("test.xlsx")
        ws = wb.active
        for x in range(1, ws.max_row+1):
            db_data = {
                "time": ws.cell(row=x, column=2).value,
                "vel": ws.cell(row=x, column=3).value,
                "acc": acc,
                "n_vel": ws.cell(row=x, column=3).value
            }
            collection.insert_one(db_data)
    
    collection = Connect_DB()
    excel_to_DB(collection)

    load_workbook을 사용해서 xlsx 파일을 불러 오고 내용을 하나씩 읽으면서 insert_one을 사용해서 DB에 하나씩 값을 집어 넣습니다.

     

    결과>>

    위처럼 8만개 이상의 빅데이터(Big Data)가 DB에 들어 갔습니다. 업로드 속도는 느렸지만 업로드가 완료된 뒤 DB에서 Data 처리는 빠르게 진행 됩니다.

     

     

    반응형