---
title: 데이터 매핑 JSON 형식
date: 2020-02-24
categories:
  - data-integration
  - database-mapping
  - json
tags:
  - data-mapping
  - database-mapping
  - json-lines
  - json-mapping
  - mapforce
description: Altova MapForce는 JSON Lines 형식을 데이터 소스 또는 대상 데이터로 지원합니다. 예를 들어, 데이터베이스에서 레코드를 추출하여 .jsonl 형식으로 출력할 수 있습니다.
---
Status: #blog

Tags:  #data-mapping #database-mapping #json-lines #json-mapping #mapforce

Categories: [data-integration](/blog/ko/category/data-integration.md) | [data-integration](/blog/ko/category/data-integration.md) | [json](/blog/ko/category/json.md)
# 데이터 매핑 JSON 형식

JSON 데이터 형식은 개방형 표준으로서, 새로운 데이터 교환 요구 사항에 창의적으로 적용되면서 계속 발전하고 있습니다. [http://jsonlines.org/](http://jsonlines.org/)에서 정의된 JSON Lines는 구조화된 데이터를 저장하기 위한 편리한 텍스트 형식으로, 각 레코드가 단일 줄로 표현되며 유효한 JSON 객체입니다. JSON Lines는 표 형태의 데이터를 처리하고, 데이터 유형을 명확하게 식별하여 모호함을 줄입니다. 이를 통해 레코드를 하나씩 처리할 수 있으며, 이는 데이터를 내보내고 전송하는 데 매우 유용한 형식입니다.

Altova MapForce는 JSON Lines 형식을 데이터 소스 또는 대상 데이터로 지원합니다. 이제 데이터베이스 테이블에서 레코드를 추출하여 JSON Lines 파일로 변환하는 매핑 프로젝트를 살펴보겠습니다.

![](/blog/images/JSON_mapping.jpg)

<!--more-->

MapForce는 다음 기능을 지원합니다 [고급 데이터 매핑, 변환, 및 데이터 처리 기능](https://www.altova.com/ko/mapforce) 다양한 인기 데이터 형식과 관계형 데이터베이스 간의 연동을 다루겠습니다. 예를 들어, 모바일 설문 조사 애플리케이션을 위해 원래 생성된 데이터베이스 테이블에 저장된 정보를 담은 JSON Lines 파일을 생성하는 작업을 맡았다고 가정해 보겠습니다. "Cars" 테이블은 다양한 제조사의 자동차 모델명과 사양을 포함하는 데이터베이스의 일부입니다.

### **데이터 매핑 결과를 JSON Lines 형식으로 출력합니다**

이 JSON Lines 데이터 매핑 작업을 완료하기 위한 저희의 전략은 간단합니다. 기존 데이터베이스 테이블을 검토하고, JSON Lines 형식으로 데이터를 표현하는 작은 인스턴스 파일을 생성합니다. 그런 다음, MapForce 매핑 디자인을 사용하여 데이터베이스 테이블의 열을 JSON Lines 출력의 해당 항목에 매핑합니다. 마지막으로, "MapForce 출력" 버튼을 클릭하면 전체 테이블이 자동으로 처리되어 출력 파일이 생성됩니다.

각 단계를 진행하면서 Altova MissionKit의 도구를 활용할 것입니다. 먼저, DatabaseSpy를 사용하여 데이터베이스를 열고, 테이블 디자이너 뷰에서 "Cars" 테이블을 살펴보겠습니다

[![데이터 매핑을 위한 JSON Lines 형식의 데이터를 저장하는 데이터베이스 테이블](/blog/images/table-design-view.png)](table-design-view.png)

이 표는 9개의 열로 구성되어 있으며, 각 열은 JSON 문자열 및 숫자 데이터 유형에 해당합니다. 다만, 여러 열은 비어 있을 수 있습니다. 왼쪽 창에는 6,266개의 데이터 행이 표시되어 있습니다. 오른쪽 클릭 메뉴를 사용하여 처음 200개의 행을 가져와 데이터를 확인할 수 있습니다

[![데이터 매핑을 위한 JSON Lines 형식의 데이터베이스 테이블 내용](/blog/images/table-contents-1.png)](table-contents-1.png)

6행과 7행을 보면, 실제로 일부 행에 누락된 데이터가 포함되어 있음을 알 수 있습니다. 이제 원본 데이터의 구조를 파악했으므로, 단일 JSON 형식으로 데이터를 표현하는 작은 예제 파일을 만들 수 있습니다. XMLSpy의 [JSON 편집 기능](https://www.altova.com/ko/xmlspy-xml-editor#json_editor)은 이러한 작업을 위한 훌륭한 도구를 제공합니다

[![데이터 매핑을 위한 JSON Lines 형식의 예제 파일](/blog/images/jsonl-instance.png)](jsonl-instance.png)

저희는 XMLSpy에서 JSON 입력을 색상으로 구분하여 표시하고, 파일이 올바른 형식인지 확인할 수 있습니다. 참고로, 저희는 JSON Lines 형식을 나타내기 위해 파일 확장자를 .jsonl로 저장했습니다.

다음으로, 새로운 MapForce를 열고 데이터 매핑을 설정한 후, 데이터베이스 테이블과 .jsonl 인스턴스 파일을 불러옵니다

[![데이터 매핑을 위한 JSON Lines 형식의 새로운 디자인](/blog/images/new-data-mapping.png)](new-data-mapping.png)

.jsonl 형식의 데이터 파일을 불러오면, MapForce는 자동으로 해당 데이터의 각 항목에 대한 가능한 데이터 유형을 설명하는 JSON 스키마를 생성합니다. 기본 스키마는 하나의 항목만 설명하지만, 항목을 선택하고 컨텍스트 메뉴를 사용하여 중복 항목을 추가하면 8개의 추가 자식 항목을 만들 수 있습니다

[![데이터 매핑을 위한 JSON 형식으로, 9개의 항목을 포함하는 JSON 데이터 구조입니다](/blog/images/data-mapping-2.png)](data-mapping-2.png)

다음으로, 데이터베이스의 각 열을 JSON 배열의 각 항목에 해당하는 적절한 데이터 유형에 연결합니다. 또한, "Cars" 테이블을 JSON 스키마의 맨 위에 있는 첫 번째 항목에 연결합니다. 이렇게 하면 매핑 과정에서 "Cars" 테이블의 각 행에 대해 새로운 출력 행을 생성하도록 지시됩니다.

[![데이터베이스 소스를 연결하여 출력 대상 데이터를 설정합니다](/blog/images/data-mapping-3.png)](data-mapping-3.png)

매핑 창 하단에 있는 "출력" 버튼을 클릭하면 전체 테이블을 변환하고 결과를 미리 볼 수 있습니다. 하지만 한 가지 고려해야 할 점이 있습니다. 바로 "null" 값(비어 있는 값)에 대한 처리입니다. 만약 지금 출력 파일을 저장하면, 데이터베이스에 존재하는 모든 "null" 값은 완전히 무시됩니다. 그 결과, JSON Lines 파일에는 9개 미만의 필드를 가진 줄이 남게 됩니다. 이러한 줄은 이후 처리 과정에서 정확하게 해석하기 어렵습니다.

### Null 값이 포함된 JSON 형식 데이터 매핑

MapForce에는 널(null) 값을 가진 필드를 식별하고 처리할 수 있는 필터 기능이 포함되어 있습니다

[![JSON 데이터 매핑 시 null 값 처리 방법](/blog/images/data-mapping-4-1.png)](data-mapping-4-1.png)

JSON 배열 내의 단일 항목은 숫자와 null 값의 두 가지 값을 동시에 가질 수 없습니다. 필터와 연결된 구성 요소는 "원통" 열에 있는 null 데이터가 항목 4의 null 데이터 유형으로 매핑된다는 것을 알려줍니다. 만약 값이 null이 아니라면, 숫자 데이터 유형으로 매핑됩니다. 이와 동일한 필터 구조를 나머지 null 값을 가질 수 있는 모든 열에 적용할 수 있습니다.

MapForce는 사용자 정의 함수를 생성하는 기능을 제공하며, 이를 통해 필터 구조를 저장하고 재사용할 수 있습니다. 특히, null 값을 포함하는 JSON 데이터 매핑 작업에서 유용합니다. 사용자는 단순히 필터와 관련 구성 요소를 선택한 후, "함수" 메인 메뉴에서 "사용자 정의 함수 생성"을 선택하면 됩니다

[![널(null) 값을 처리하는 사용자 정의 함수를 만드는 방법](/blog/images/data-mapping-user-funct-1030x381.png)](data-mapping-user-funct.png)

사용자 정의 함수는 선택된 구성 요소들을 묶어 하나의 함수로 만들고, 원래 매핑에서 해당 부분을 대체하며, 함수 라이브러리에 추가됩니다

[![소스 데이터베이스에서 null 값을 감지하는 사용자 정의 함수](/blog/images/user-function-def-1.png)](user-function-def-1.png)

라이브러리에서 사용자 정의 함수를 선택하여 끌어온 다음, 다른 NULL 값을 허용하는 데이터베이스 열에 연결할 수 있습니다.

데이터 매핑 과정에서 JSON 형식을 사용할 때, 때로는 널(null) 값을 가진 텍스트를 빈 문자열로 변환하는 것이 더 효율적일 수 있습니다. MapForce는 "대체(substitute)-결측값" 기능을 통해 이러한 요구사항을 처리할 수 있습니다. 아래 그림에서, 마지막 데이터베이스 열에 있는 널(null) 값을 가진 텍스트가 빈 문자열로 매핑되는 것을 확인할 수 있습니다

[![널(null) 값을 빈 문자열로 변환하기](/blog/images/data-mapping-5a.png)](https://www.altova.com/blog/?attachment_id=4698)

다음은 널(null) 값 탐지 사용자 함수를 사용하여 완료된 데이터 매핑의 예시입니다

![JSON Lines 형식의 데이터 매핑 작업이 완료된 모습입니다](/blog/images/data-mapping-complete-1030x870.png)

왼쪽에 있는 "라이브러리" 창에서 강조 표시된 "널(null) 감지 사용자 함수"에 주목하십시오.

모든 가능한 null 값들을 처리했으므로, 이제 "출력" 버튼을 클릭하여 .jsonl 형식의 출력 파일을 생성할 수 있습니다

[![.jsonl 출력 파일의 일부 내용입니다](/blog/images/output-view.png)](output-view.png)

참고로, 1675번째 줄을 포함한 일부 줄에는 null 값과 빈 문자열이 모두 포함되어 있지만, 1690번째 줄부터 1691번째 줄까지는 데이터가 완전히 채워져 있습니다.

일회성 변환의 경우, 생성된 결과 파일을 즉시 저장할 수 있습니다. 데이터베이스가 지속적으로 업데이트되어 나중에 다시 변환해야 하는 경우, 변환 규칙을 MapForce Server 실행 파일로 저장하여 MapForce Server를 통해 자동 처리를 하거나, FlowForce Server에 직접 배포할 수 있습니다.

### 데이터 매핑: JSON Lines 형식 파일을 소스 파일로 사용

아래의 데이터 매핑 예시는 .jsonl 형식의 소스 파일에서 가져온 유사한 데이터 세트를 데이터베이스 테이블로 매핑하는 방법을 보여줍니다.

[![새로운 데이터베이스 테이블을 생성하기 위해 JSON 형식의 데이터를 소스 데이터로 사용합니다](/blog/images/data-mapping-reversed.png)](data-mapping-reversed.png)

이 버전을 더 명확하게 만들기 위해, XMLSpy에서 JSON 스키마를 편집하여 각 배열 요소에 대한 설명(description)을 추가하고, 유효하지 않은 데이터 유형을 삭제했습니다. 이 매핑에 대한 "출력" 버튼을 클릭하면, 데이터베이스 테이블에 데이터를 로드하는 SQL 스크립트가 생성됩니다.

참고로, 아무런 연결 관계도 필요 없는 "널(null)" 값들은 소스에서 타겟으로의 연결을 필요로 하지 않습니다. 필요한 널 값들은 18번째 줄에서 볼 수 있듯이, 데이터베이스 테이블에 자동으로 삽입됩니다

[![데이터 매핑을 위해 JSON 형식의 데이터를 데이터베이스 테이블에 저장하는 SQL 스크립트가 생성되었습니다](/blog/images/SQL-script-ouput.png)](SQL-script-ouput.png)

[무료 체험판을 다운로드하세요](https://www.altova.com/ko/mapforce/download) 튜토리얼, 도움말, 그리고 다양한 예제를 통해 데이터 매핑, JSON Lines 또는 기타 데이터 매핑, 변환 및 처리 작업을 시작해 보세요!
