본문 바로가기
자바스크립트(Javascript)

MongoDB에 데이터 일괄 업로드 하기(1)

by 즐거운코딩 2023. 12. 21.
반응형

서비스 개발을 하기 위해 필요한 더미(Dummy) 데이터를 만들 필요가 있거나,

서비스용 데이터를 별도 입력 웹페이지를 만들어서 한 건씩 입력하는 것이 어렵기 때문에 초기 데이터 일괄 업로드 하는 방법에 대해 알려드리고자 합니다.

 

어떤 서비스를 기획하고 개발하여 제공하기 위해서는 서비스 특성에 따라 필요한 데이터에 대한 정의부터 진행하게 됩니다.

이번에는 정보성 서비스 제공을 위한 기초 데이터 생성 이나 개발용으로 더미 데이터를 만드는 방법을 예시를 들어 설명하겠습니다.

 

예시로 국내 여행정보를 소개하는 사이트를 만드는데 기초 데이터는 공공데이터포털 에서 가져왔습니다.

공공데이터포탈 가입 및 이용방법에 대해서는 별도 포스트에서 추가로 설명드리겠습니다.

 

1.  샘플 데이터 만들기

기초 데이터는 공공데이터포탈의 "전국관광지정보표준데이터" 로 ⌜관광진흥법⌟ 등에 따라 기초지방자치단체장이 신청하여 광역지방자치단체장이 지정한 관광지역 정보 (관광지, 관광단지 포함. 관광특구 제외) 입니다.


데이터 형태는 다음과 같습니다.

항목 항목설명
trrsrtNm 관광지명
trrsrtSe 관광지구분
rdnmadr 소재지도로명주소
lnmadr 소재지지번주소
latitude 위도
longitude 경도
ar 면적
cnvnncFclty 공공편익시설정보
stayngInfo 숙박시설정보
mvmAmsmtFclty 운동및오락시설정보
recrtClturFclty 휴양및문화시설정보
hospitalityFclty 접객시설정보
sportFclty 지원시설정보
appnDate 지정일자
aceptncCo 수용인원수
prkplceCo 주차가능수
trrsrtIntrcn 관광지소개
phoneNumber 관리기관전화번호
institutionNm 관리기관명
referenceDate 데이터기준일자
instt_code 제공기관코드

 

API로 개별로 조회할 수 있지만 초기 데이터 업로드 이므로 전체 데이터를 XLS, JSON, CSV 파일로 받을 수 있습니다.

JSON 파일은 바로 DB에 입력하기 좋지만 혹시 다른 원천데이터가 XLS, CSV 인 경우 JSON 포맷으로 변경이 필요합니다.

 

👉 JSON file data

{
  "fields": [
    { "id": "관광지명" },
    { "id": "관광지구분" },
    { "id": "소재지도로명주소" },
    { "id": "소재지지번주소" },
    { "id": "위도" },
    { "id": "경도" },
    { "id": "면적" },
    { "id": "공공편익시설정보" },
    { "id": "숙박시설정보" },
    { "id": "운동및오락시설정보" },
    { "id": "휴양및문화시설정보" },
    { "id": "접객시설정보" },
    { "id": "지원시설정보" },
    { "id": "지정일자" },
    { "id": "수용인원수" },
    { "id": "주차가능수" },
    { "id": "관광지소개" },
    { "id": "관리기관전화번호" },
    { "id": "관리기관명" },
    { "id": "데이터기준일자" },
    { "id": "제공기관코드" },
    { "id": "제공기관명" }
  ],
  "records": [
    {
      "관광지명": "일제 경성호국신사 계단(108계단)",
      "관광지구분": "관광지",
      "소재지도로명주소": "서울특별시 용산구 신흥로22가길 33",
      "소재지지번주소": "서울특별시 용산구 용산동2가 1-346",
      "위도": "37.546023",
      "경도": "126.982542",
      "면적": "237.2",
      "공공편익시설정보": "승강기",
      "숙박시설정보": "",
      "운동및오락시설정보": "",
      "휴양및문화시설정보": "",
      "접객시설정보": "",
      "지원시설정보": "",
      "지정일자": "1905-04-26",
      "수용인원수": "20",
      "주차가능수": "0",
      "관광지소개": "일제강점기 경성호국신사에 참배하기 위해 오르던 진입로로, 완공까지 한국인들의 재산과 노동력이 동원되었다. 일제 말기 식민지 한국이 처했던 비극의 역사를 선명하게 보여주는 장소이다.",
      "관리기관전화번호": "02-2199-7240",
      "관리기관명": "서울특별시 용산구청 문화체육과",
      "데이터기준일자": "2022-12-07",
      "제공기관코드": "3020000",
      "제공기관명": "서울특별시 용산구"
    },
    {
      "관광지명": "찬바람재",
      "관광지구분": "관광지",
      "소재지도로명주소": "서울특별시 용산구 녹사평대로 195",
      "소재지지번주소": "서울특별시 용산구 용산동2가 7-99",
      "위도": "37.534815",
      "경도": "126.987014",
      "면적": "646.6",
      "공공편익시설정보": "승강기",
      "숙박시설정보": "",
      "운동및오락시설정보": "",
      "휴양및문화시설정보": "",
      "접객시설정보": "",
      "지원시설정보": "",
      "지정일자": "2000-12-15",
      "수용인원수": "50",
      "주차가능수": "0",
      "관광지소개": "예전부터 겨울철 찬바람이 매섭게 몰아친다 하여 찬바람재 또는 한풍재라고도 불리던 곳이다. 현재는 이 일대를 푸른 풀이 무성한 들판이라는 뜻의 녹사평이라고 부르고 있다.",
      "관리기관전화번호": "02-2199-7240",
      "관리기관명": "서울특별시 용산구청 문화체육과",
      "데이터기준일자": "2022-12-07",
      "제공기관코드": "3020000",
      "제공기관명": "서울특별시 용산구"
    },

 

👉 Excel file data

 

2.  입력 데이터로 가공하기

엑셀이나 CSV 파일데이터를 JSON으로 변경하는 프로그램 언어가 지원하는 라이브러리 등을 활용하는 것 같이 다양한 방법이 있지만 단순히 초기 데이터 작업용으로는 conversion 기능을 지원하는 웹사이트를 활용하면 됩니다.

예시로 ASPOSE 에서 지원하는 변환프로그램을 사용해 보겠습니다.

https://products.aspose.app/cells/ko/conversion/excel-to-json

 

EXCEL에서 JSON로 변환기

EXCEL을(를) JSON(으)로 온라인으로 무료로 변환기합니다.

products.aspose.app

사용방법은 단순합니다.  엑셀 파일을 업로드 하고 변환 포맷을 선택하여 "전환하기" 버튼을 실행합니다.

 

변환 완료된 후 "지금 다운로드" 로 다운로드 하면 됩니다.

 

📌 ASPOSE에서는 JSON 포맷 이외에도 PDF, PPT, HTML, CSV, JPG 등 다양한 포맷으로 변경 기능을 제공

 

다음 포스트에서는 JSON 포맷 데이터를 기반으로 MongoDB에 저장하는 방법을 설명하도록 하겠습니다.

 

2023.12.22 - [자바스크립트(Javascript)] - MongoDB에 데이터 일괄 업로드 하기(2)

 

MongoDB에 데이터 일괄 업로드 하기(2)

JSON 파일을 기반으로 MongoDB에 일괄 업로드 하는 방법에 대해 예시를 들어 설명하겠습니다. MongoDB 데이터베이스에 데이터를 입력하기 위해서는 다음과 같은 과정이 필요합니다. 단계별 과정을 구

peter-codinglife.tistory.com

 

반응형