CSV → YAML 변환기

YAML은 최신 설정 파일을 이루는 형식입니다. Kubernetes 매니페스트, GitHub Actions 워크플로, Docker Compose, Ansible 플레이북, Rails 픽스처 등이 모두 YAML을 사용합니다. 이 변환기는 CSV를 읽어 각 행이 헤더 행을 키로 하는 매핑이 되는 YAML 시퀀스를 생성합니다. 출력은 2칸 들여쓰기와 4단계 인라인 임계값을 사용하며, 대부분의 편집기와 린터 스타일에 맞춰져 있습니다.

CSV가 어떻게 YAML로 변하는지

  1. 1

    CSV 파일을 붙여넣으세요

    샘플이 미리 로드되어 있어 기본 출력 형태를 확인할 수 있습니다. 이를 사용자 데이터로 대체하세요.

  2. 2

    구분 기호를 선택하세요

    기본값은 쉼표입니다. 탭으로 구분된 입력에는 `\t`를, 그 밖에 파일이 사용하는 다른 한 글자를 입력하세요.

  3. 3

    헤더가 키로 변합니다

    1번 행은 헤더로 간주됩니다. 데이터 행들은 소스 열과 동일한 순서로 해당 키에 대응하는 매핑값으로 처리됩니다.

  4. 4

    YAML이 안전하게 출력됩니다

    출력은 Symfony YAML 컴포넌트가 생성하며, 불리언·숫자·날짜와 혼동될 여지가 있으면 값을 따옴표로 감쌉니다.

출력을 붙여넣기 전에 알아 두어야 할 YAML의 특이한 점

YAML은 겉보기에는 매우 관대하지만 내부에는 다양한 함정이 숨어 있습니다. 덤프 도구가 대부분의 문제를 처리해 주지만, 사용자의 데이터는 여전히 왕복 변환 과정을 견뎌내야 합니다.

노르웨이 문제와 그 친구들

YAML 1.1은 no, yes, on, off, true, false, y, n(그리고 대문자 형태 포함)을 모두 불리언 값으로 처리합니다. 예를 들어 노르웨이를 나타내는 국가 코드 열에 NO가 있으면 이 값이 조용히 false로 바뀔 수 있습니다.

원본 셀 출력 결과(따옴표 없음) 일반적으로 의도한 의미
NO false 국가 노르웨이
ON true 온타리오 주
123 123 숫자 또는 ID
0100 64 (8진수!) 앞자리가 0인 코드

덤프 도구는 위험한 값을 자동으로 따옴표로 감싸지만, 출력 결과에 잘못된 데이터 형식이 나타나면 이후 단계에서 YAML 1.2 파서로 전환하거나, 중요한 값을 직접 따옴표로 감싸 주세요.

형식 선택

  • 2칸 들여쓰기: 대부분의 편집기에서 사용되는 표준 설정이며, yamllint 같은 린터도 기본적으로 이 설정을 적용합니다.
  • 인라인 임계값 4: 깊이 중첩된 구조는 4번째 수준 아래에서는 한 줄로 출력되고, 그 위에서는 여러 줄로 펼쳐집니다. 더 엄격한 블록을 원하면 이후 단계에서 조정하세요.
  • 앵커와 별칭은 생성되지 않습니다. 행이 중복되더라도 각 행은 새로운 매핑이 됩니다.

출력 예시

- name: Alice
  age: 30
- name: Bob
  age: 25

JSON 대신 YAML을 선택해야 할 때

  • 주석과 여러 줄 문자열이 중요한, 손으로 편집하는 설정 파일.
  • 쿠버네티스 매니페스트, CI 파이프라인, 앤서블 플레이북.
  • 기계뿐 아니라 사람도 파일을 읽게 되는 모든 상황.

그 외의 경우 JSON이 더 엄격하고 파싱 속도도 빠르므로, 통신용 포맷이나 생성된 페이로드에는 JSON을 선호하세요.

자주 묻는 질문

YAML 1.1은 그대로 적힌 NO를 불리언 값으로 해석합니다. 변환기가 위험한 값을 따옴표로 감싸 주지만, 이후 파서가 여전히 형식을 강제 변환한다면 출력을 붙여넣기 전에 문제되는 셀을 따옴표로 감싸거나, 이런 값을 일반 문자열로 처리하는 YAML 1.2 파서로 전환하세요.

이 변환기에서는 각 행이 평면적인 매핑으로 변합니다. 중첩된 YAML 형식의 경우, YAML 라이브러리를 기반으로 소규모 스크립트를 작성하거나, 먼저 JSON으로 변환한 후 JSON 편집기에서 형태를 조정하는 방법을 사용하십시오.

셀은 선택한 구분 기호로 str_getcsv를 사용해 파싱됩니다. 따옴표로 감싼 값은 실제 CSV 파서와 동일하게 안에 포함된 구분 기호와 따옴표를 그대로 보존합니다.

네. 붙여넣은 CSV는 서버로 전송됩니다. 파싱과 YAML 직렬화는 서버에서 수행되며, CSV는 YAML 출력 생성에만 사용되고 저장되지 않습니다.

관련 도구

이 도구는 다른 언어로도 제공됩니다