JSON 파일을 MongoDB로 가져오기

Tahseen Tauseef 2023년6월20일
  1. 몽고DB란?
  2. mongoimport 명령
  3. mongoimport 명령을 사용하여 MongoDB로 데이터 가져오기
  4. mongoimport 명령을 사용하여 JSON 파일을 MongoDB로 가져오기
  5. mongoimport 명령을 사용하여 CSV 파일을 MongoDB로 가져오기
  6. mongoimport 명령을 사용하여 TSV 파일을 MongoDB로 가져오기
JSON 파일을 MongoDB로 가져오기

이 자습서에서는 세 가지 파일 형식(JSON, CSV 및 TSV)을 모두 MongoDB 데이터베이스 인스턴스로 빠르고 쉽게 가져오는 방법에 대해 설명합니다. 자, 더 이상 고민하지 않고 바로 시작하겠습니다.

몽고DB란?

MongoDB는 NoSQL(비관계형) 데이터베이스 시스템입니다.

방대한 데이터로 작업하는 경우 서로 다른 데이터를 긴밀한 관계형 모델에 맞추는 것은 쉽지 않습니다. RDBMS(관계형 데이터베이스 관리 시스템)라고도 하는 SQL 데이터베이스는 대량의 데이터를 저장하는 데 적합하지 않은 미리 정의된 설계에 따라 행과 열에 데이터를 저장합니다.

비관계형 또는 MongoDB와 같은 NoSQL 데이터베이스에는 개발자가 즉시 업데이트할 수 있는 동적 스키마가 있습니다. 뛰어난 확장성과 빠른 검색에 중점을 둔 MongoDB는 SQL 데이터베이스보다 선호되는 솔루션으로 부상했습니다.

MongoDB의 동적 스키마 아키텍처는 개발자를 위한 프로그래밍을 단순화하면서 신속한 애플리케이션 업데이트를 가능하게 합니다.

MongoDB는 C, C++, C# 등 모든 공용 언어를 공식 지원하므로 개발자에게 유리합니다. 또한 net, Go, Java, Node.js, Perl, PHP, Python, Motor, Ruby, Scala, Swift , Mongod는 모두 프로그래밍 언어의 예입니다.

이를 통해 개발자는 선호하는 언어를 선택할 수 있으므로 개발 시간이 단축되고 결함이 줄어듭니다.

몽고DB의 주요 기능

  • 빠른 쿼리: MongoDB 쿼리는 일반적인 관계형 데이터베이스의 쿼리보다 훨씬 빠릅니다(최대 100배 빠름). 이는 SQL 데이터베이스가 정규화된 형식으로 데이터를 저장하고 단일 개체 또는 엔터티에 대한 쿼리가 수많은 테이블의 데이터를 조인해야 하므로 프로세스 속도가 느려지기 때문입니다.

  • 대규모 비정형 데이터 처리: 모든 관련 데이터를 단일 문서에 보관하는 MongoDB의 문서 데이터 아키텍처를 통해 방대한 양의 비정형 데이터를 원활하게 처리할 수 있습니다. MongoDB를 사용하면 워크로드에 더 민감한 다른 방식으로 쿼리할 수도 있습니다.

  • 수평적 확장성: 수평적 확장성은 대부분의 SQL 데이터베이스가 부족한 중요한 영역 중 하나입니다. 임시방편으로 지원하거나 아직 초기 단계인 기술에 대해서만 지원합니다.

    반면에 MongoDB는 수평적 확장이 가능하므로 필요에 따라 저렴한 상용 서버를 추가할 수 있습니다.

  • 샤딩: MongoDB를 사용하면 앱에 연결된 여러 서버에 분산하여 막대한 양의 데이터를 저장할 수 있습니다. 한 서버에서 데이터 크기를 관리할 수 없으면 데이터가 다른 서버로 자동 샤딩됩니다.

  • 개발자를 위한 용이함: MongoDB의 데이터 구조는 컴퓨터 언어의 데이터 구조에 매핑될 수 있습니다. 이렇게 하면 개발자가 새로운 언어를 배우고 MongoDB를 구성하고 데이터를 저장하는 데 필요한 시간과 노력이 줄어듭니다.

mongoimport 명령

mongoimport 명령을 실행하기 전에 모든 사용자는 시스템에 MongoDB 데이터베이스 유틸리티를 설치해야 합니다.

mongoimport 명령은 mongoexport 생성 확장 JSON, CSV 또는 TSV 내보내기에서 콘텐츠를 가져올 수 있습니다. 또한 타사 내보내기 프로그램에서 데이터를 복원하거나 가져올 수 있습니다.

MongoDB 데이터베이스를 관리할 때 이 명령이 편리합니다. 가져오기를 수행하기 위해 개발할 수 있는 맞춤형 스크립트보다 빠르고 다중 스레드입니다.

JSON 조작을 위한 jq, CSV 조작을 위한 csvkit 또는 인터넷의 서버에서 데이터 파일을 동적으로 가져오기 위한 curl과 같은 다른 MongoDB 명령줄 도구는 mongoimport 명령과 쌍을 이룰 수 있습니다.

mongoimport 명령의 구문은 다음과 같습니다.

`mongoimport` <options> <connection-string> <file>

확장 형식에서는 다음과 같습니다.

mongoimport --host -u -p --authenticationDatabase --db  --colle --drop --file /name_of_file

다음 섹션에서는 구문을 사용하여 JSON, CSV 및 TSV와 같은 다양한 파일 유형을 가져올 수 있는 다양한 방법을 살펴보겠습니다.

mongoimport 명령의 적용

팀에서 개발하는 웹 애플리케이션의 종류에 관계없이 일부 데이터를 참조하거나 데이터베이스에 이미 존재하는 컬렉션을 가져오려는 여러 상황이 있을 수 있습니다. 이러한 작업에는 MongoDB mongoimport 명령을 사용하여 JSON 또는 CSV 파일 모음에서 데이터 검색이 포함됩니다.

MongoDB는 고객이 웹 애플리케이션을 사용할 때 정보의 백엔드 소스로 사용될 수 있으며 mongoimport가 도움이 될 수 있습니다.

CSV 또는 TSV의 파일 형식과 비교할 때 JSON은 계층적 데이터 형식이고 MongoDB 문서와 비교할 때 인코딩하는 데이터 유형에 대해 정확하기 때문에 권장됩니다. 이러한 지식을 바탕으로 mongoimport를 사용하여 데이터를 가져올 때마다 데이터를 JSON 형식으로 변환하는 것을 권장하지 않습니다. 대신 면밀히 조사하고 재구성할지 여부를 결정하십시오.

mongoimport 명령 사용 시 고려 사항

예방 조치로 전체 인스턴스 프로덕션 백업에 mongoimportmongoexport를 사용하지 마십시오. JSON은 BSON 유형의 하위 집합만 나타내므로 mongoimportmongoexport 명령은 모든 풍부한 BSON 데이터 유형을 안정적으로 유지할 수 없습니다.

따라서 mongodumpmongorestore를 사용하는 대신 mongodumpmongorestore를 사용할 것을 제안합니다.

다음은 mongoexportmongoimport 명령이 엄격 모드 표현을 사용하여 정보를 유지 관리하는 방법을 보여주기 위해 BSON 유형 data datedata numberlong에 대한 쉘 모드 표시를 활용하는 mongo 쉘의 삽입 작업 예입니다.

use test
db.traffic. insert( { _id: 1, volume: NumberLong ('2980001'), date: new Date() } )

정확도 손실을 방지하려면 data_numberlong에 제공된 입력을 인용해야 합니다. 이제 mongoexport를 사용하여 데이터를 내보내면 다음과 같은 결과가 나타납니다.

mongoexport -- db test --collection traffic -- out traffic.json

유형 정보를 유지하기 위해 내보낸 데이터는 엄격 모드 표현으로 나타납니다.

{ "_id" : 1, "volume" : { "$numberLong" : "2980001" }, "date" : { "$date" : "2014-03-13T13:47:42. 483-0400" } }

mongoimport 명령을 사용하여 MongoDB로 데이터 가져오기

앞서 언급했듯이 mongoimport는 JSON, CSV 또는 TSV 파일을 가져올 수 있습니다. 명확하고 간단한 탐색을 위해 JSON, CSV 또는 TSV 파일에서 데이터를 가져오는 절차를 세 부분으로 나누었습니다.

이 섹션으로 이동하기 전에 MongoDB 인스턴스가 mongoimport Windows, macOS 또는 Ubuntu 애플리케이션에 연결되어 있는지 확인하십시오. mongoimport를 MongoDB 데이터베이스에 연결하는 몇 가지 옵션이 있지만 다음과 같은 –uri 옵션을 사용하는 것이 좋습니다.

mongoimport --uri 'mongodb+srv: // mycluster-ABCDE.azure.mongodb. net/test?retryWrites=true&w=majority'
   --username='USERNAME'
   --password='PASSWORD'
Note
MongoDB Atlas Deployment를 사용하는 경우 Database Deployments > Connect로 이동하여 Atlas 연결 문자열을 검색합니다.

Atlas Deployment를 사용하지 않는 경우 고유한 URI를 만들어야 합니다. 단일 server\에 연결하는 경우 URL은 mongodb://your.server. 주인. name:port/, replicaset\을 실행하고 다른 호스트 이름에 연결하면 URI는 mongodb://username:password @host1: port,host2:port/?replicaSet=replicasetname과 같이 표시됩니다.

mongoimport 명령을 사용하여 JSON 파일을 MongoDB로 가져오기

한 컬렉션에서 JSON 파일을 가져오려면 아래 코드를 사용하십시오.

mongoimport --db DB_Name --c collection_ Name --type= json --
file Name-of-the-file-to-import

어디,

  1. DB_NameCollection_Name 콜렉션을 포함하는 데이터베이스의 이름을 나타냅니다.
  2. type은 파일 유형 JSON을 지정합니다(선택 필드).
  3. 가져오기/복원할 JSON 파일의 이름과 경로는 가져올 파일 이름으로 표시됩니다.

또는 위의 코드를 다음과 같이 더 간결하게 작성할 수 있습니다.

mongoimport -d DB_NAME - c COLLECTION _name --file Name-of-the-file-to-import

생성/가져오려는 것과 이름이 같은 기존 컬렉션을 삭제하려면 mongoimport 명령과 함께 –drop 플래그를 사용할 수 있습니다.

mongoimport -d DB_NAME -c collect._name --drop --file Name-of-file-to-import

JSON 데이터를 가져올 때 MongoDB mongoimport 명령을 사용하여 호스트 또는 포트 번호를 변경할 수 있습니다.

mongoimport --host 123. 123. 123.1 --port 4567 -d DB _ NAME -c collection _name --file Name-of-the-file-to-import

기본적으로 mongoimport는 포트 27017의 localhost에서 실행 중인 mongo에 연결합니다.

mongoimport 명령을 사용하여 CSV 파일을 MongoDB로 가져오기

mongoimport 명령을 사용하여 헤더 행 옵션이 있는 컬렉션으로 CSV 파일을 가져올 수 있습니다. 그러나 header line 인수는 데이터가 아닌 필드 이름을 포함하기 때문에 첫 번째 줄을 문서로 가져오지 않도록 mongoimport 명령에 지시합니다.

다음 코드를 사용하여 CSV 파일에서 컬렉션을 가져옵니다.

mongoimport --db DB_Name --collection collect._Name --type=csv --
headerline --file=Name-of-file-to-import

어디,

  1. DB_NameCollection_Name 콜렉션을 포함하는 데이터베이스의 이름을 나타냅니다.
  2. type은 파일 형식 CSV를 지정합니다(선택 필드).
  3. 제목은 CSV 파일의 첫 번째 레코드를 필드 이름으로 가져오는 mongoimport 명령을 자세히 설명합니다.
  4. Name-of-file-to-import는 가져오기/복원할 CSV 파일의 이름과 경로를 나타냅니다.

mongoimport 명령을 사용하여 TSV 파일을 MongoDB로 가져오기

CSV 파일 형식과 비교할 때 TSV 파일은 기본적으로 동일합니다. 따라서 mongoimport Windows 응용 프로그램을 사용하든 다른 응용 프로그램을 사용하든 CSV 파일과 동일한 방법을 사용하여 TSV 파일을 가져올 수 있습니다.

한 가지 작은 차이점이 있습니다. –type=csv,를 사용하는 대신 –type=tsv 옵션을 사용하여 mongoimport에 새 형식을 알릴 수 있습니다.