without haste but without rest

bson 데이터 json 변환 스크립트 본문

ProgrammingLanguage/Python

bson 데이터 json 변환 스크립트

JinungKim 2021. 2. 5. 10:21

 

import json


def remove_id(bson):
    result = []
    for col in bson:
        if col == '_id':
            continue
        result.append(col)
    return result


def preprocess_bson(bson, column_list):
    result = {}
    for column in column_list:
        result[column] = bson[column]

    return result


def extract_record(bson_dummy) -> list:
    result = []
    for bson in bson_dummy:
        column_list = remove_id(bson)
        record = preprocess_bson(bson, column_list)
        result.append(record)

    return result


# return json file on memory
def to_json(record_list):
    json_data = json.dumps(record_list, ensure_ascii=False, indent=4)
    return json_data


# save as a json file
def save_as_file(file_name, record_list):

    with open('{}'.format(file_name), 'w', encoding='utf-8') as file:
        json.dump(record_list, file, ensure_ascii=False, indent=4)


def read_json(file_name):
    with open(file_name, 'r', encoding='utf-8') as file:
        result = json.loads(file.read())

    return result

 

 

몽고디비 bson 데이터 json으로 변환하려고 라이브러리 찾다가 그냥 만들었다. 마이그레이션 하면서 굳이 _id 컬럼은 필요가 없어서 해당 컬럼 날리고 나머지 필드만 가져와서 json으로 변환한다.

 

 

extract_record 함수의 리턴값을 용도에 따라서 to_json, save_as_file 두 개 중에서 골라서 사용하면 된다.

 

- to_json 함수는 bson 데이터 레코드들을 리스트에 담은 파라미터를 받아서 메모리 상에 json 데이터로 올린다

 

- save_as_file 함수는 bson 데이터 레코드들을 리스트에 담은 파라미터로 받아서 filename으로 저장한다. ex) "/c/mongo/sample.json"

 

Comments