MYMONDAY.ai
서비스스튜디오도구데이터·포맷73CSS 생성기19색상·이미지10인코딩·보안10웹·SEO11개발·데브옵스10파일·내보내기18계산기6가이드

YAML CSV 변환기

YAML 레코드 목록을 헤더 한 줄과 점 표기 열, 꼭 필요한 칸에만 붙는 따옴표를 갖춘 CSV 표로 바꿉니다.

  • 브라우저에서 처리
  • 가입 없음
  • 무료

도구 작업 공간

예제

옵션

줄 끝

=, +, -, @로 시작하는 텍스트 앞에 '를 붙여 Excel·Sheets가 수식으로 실행하지 않게 합니다.

내려받는 파일에만 BOM을 붙여 엑셀에서 한글 등 non-ASCII 글자가 깨지지 않게 합니다. 복사한 텍스트에는 영향이 없습니다.

배열
문서

---로 구분된 여러 문서가 있는 파일을 배열로 만들지(자동), 항상 배열로 만들지, 첫 문서만 쓸지 정합니다.

YAML 1.1 병합 키: <<: *base는 앵커의 키를 복사하며, 옆에 직접 쓴 키가 우선합니다. 끄면 <<를 일반 키로 둡니다.

YAML 입력

16줄233byte

결과

⌘/Ctrl + Enter로 복사
결과 · data.csv
id,name,email,active,score

1,Ada Lovelace,ada@example.com,true,98.5

2,Grace Hopper,grace@example.com,false,91

3,Linus,,true,87.25

행3
열5
크기134byte

YAML CSV 변환은 YAML이 비슷한 매핑의 목록일 때 잘 맞습니다. 재고 목록, 사용자 목록, 설정의 items: 블록, 또는 ---로 나뉜 문서마다 레코드 하나인 파일이 그렇습니다. 매핑 하나가 한 행이 되고 헤더는 모든 레코드의 키를 처음 나온 순서로 합친 목록이라서, 키가 서로 달라도 열이 맞춰지고 없는 키는 빈 칸이 됩니다. 매핑 하나만 있으면 한 행이고, 값만 담긴 목록은 value 열 하나가 됩니다.

펼치기 전에 yaml 라이브러리(YAML 1.2 코어 스키마)로 먼저 읽고 병합 키(<<: *defaults)도 기본으로 펼치므로, 앵커에서 필드를 물려받는 행에는 그 필드가 실제로 들어갑니다. 중첩 매핑은 address.city 같은 점 표기 열이 되고, 목록은 한 칸의 JSON 텍스트로 두거나 인덱스별 열로 나눕니다.

입력하는 동안 결과가 갱신되며, 레코드 모양의 예제가 세 가지 있습니다. 모든 처리는 브라우저 탭 안에서 이루어지고 업로드되지 않습니다. 입력은 20MiB, 행은 50,000개, 열은 200개까지입니다.

사용 방법

  1. YAML 붙여 넣기 또는 예제 불러오기

    매핑 목록을 붙여 넣거나 .yaml 파일을 편집기에 끌어다 놓고, 예제 칩을 고를 수도 있습니다. 예제는 CSV가 기대하는 모양인 레코드 목록입니다.

  2. 구분자와 줄 끝 고르기

    구분자는 쉼표, 세미콜론, 탭, 파이프 중에서 고릅니다. 소수점을 쉼표로 쓰는 로캘의 스프레드시트에는 세미콜론, TSV에는 탭을 씁니다. 줄 끝은 기본이 CRLF이고 유닉스 도구용으로 LF도 고를 수 있습니다.

  3. 헤더, 배열, 수식 옵션 정하기

    기존 파일에 이어 붙일 때는 헤더 행 스위치를 꺼서 첫 줄을 뺍니다. 배열은 한 칸의 JSON 텍스트로 두거나 인덱스별 열로 나눌 수 있고, 수식 무력화는 기본으로 켜져 있습니다.

  4. 문서와 병합 키를 읽는 방식 고르기

    문서가 여러 개일 때 자동은 문서마다 한 행을 만들고, 항상 배열도 같지만 문서 하나일 때도 배열로 다루며, 첫 문서만은 첫 문서만 남기고 알림을 보여 줍니다. 병합 키(<<) 펼치기는 앵커의 필드를 병합한 행에 복사합니다.

  5. 알림 확인 후 복사 또는 저장

    결과 아래의 알림에서 같은 이름의 열이 합쳐졌는지, 앞에 작은따옴표가 붙은 텍스트 칸이 몇 개인지 알려 줍니다. CSV를 복사하거나 data.csv로 저장해 스프레드시트에서 엽니다.

작동 원리

레코드, 열, 평탄화

최상위는 레코드 목록이거나 매핑 하나입니다. 레코드는 각각 따로 키를 점으로 이어 붙이며 중첩 매핑 안으로 내려가 펼치고, 헤더는 처음 나온 순서대로 모든 키를 합친 목록입니다. 배열 옵션이 기본이면 목록은 말단이고 압축된 JSON 텍스트로 적히므로 langs: [go, rust]는 한 칸이며 목록 항목이 행으로 늘어나지 않습니다.

a.b라는 키와 a: {b: 2}처럼 두 경로가 같은 열 이름을 만들면 첫 값을 남기고 알림에 열 이름을 알려 줍니다. 빈 목록이거나 빈 매핑만 든 목록이면 열이 없어 오류가 나고, hello 같은 스칼라 하나는 value 열의 한 칸이 됩니다.

YAML 값CSV 칸
name: AdaAda
price: 49.9, qty: 249.9, 2
active: true, flag: yestrue, yes (YAML 1.2에서 yes는 텍스트)
email: ~ 또는 없는 키(빈 칸)
langs: [go, rust]["go","rust"] JSON 텍스트, 또는 langs.0과 langs.1
extra: {}{}
when: 2026-03-142026-03-14 (날짜가 아닌 문자열)
ratio: 1.01.0 (kept as written)
v: .inf알림과 함께 .inf (CSV에는 무한대가 없음)

따옴표, 줄 끝, 수식 안전

칸은 구분자, 큰따옴표, 줄바꿈이 들어 있거나 앞뒤에 공백이 있을 때만 큰따옴표로 감싸고, 안의 따옴표는 RFC 4180대로 두 번 씁니다. 나머지는 그대로 적으므로 숫자와 단어가 읽기 쉽게 남습니다. 행은 CRLF 또는 LF로 끝나고 파일도 마지막 줄 끝으로 마칩니다.

엑셀, 리브레오피스, 구글 시트는 텍스트 칸이 =, +, -, @로 시작하면 수식으로 실행합니다. 수식 무력화가 켜져 있으면 그런 텍스트 칸 앞에 '가 붙고 알림이 개수를 알려 줍니다. qty: -5 같은 YAML 숫자는 텍스트가 아니므로 그대로 두고, 텍스트 "-5 degrees"에는 접두어가 붙습니다.

id,name,address.city
1,"Ada, L.",Seoul

YAML이라서 달라지는 부분

병합 키와 별칭이 먼저 해결되므로 <<: *d와 port: 2로 쓴 레코드는 완전한 행이 됩니다. 병합 키 펼치기를 끄면 그 행은 대신 <<.host, <<.port 열을 채웁니다. 타입은 YAML 1.2를 따라서 0123은 숫자 123, 0o17은 15, yes는 텍스트입니다.

여러 문서는 여러 레코드가 됩니다. 끝의 ---나 ...는 빈 레코드가 아니고, 2^53을 넘는 정수는 반올림된 숫자 대신 알림과 함께 정확한 텍스트로 적힙니다.

실제 예시

키가 빠진 매핑 목록
입력
- name: Ada
  role: dev
  langs: [go, rust]
- name: "Bo, Jr."
  role: ops
  address:
    city: Seoul
- name: Cy
  active: yes
출력
name,role,langs,address.city,active
Ada,dev,"[""go"",""rust""]",,
"Bo, Jr.",ops,,Seoul,
Cy,,,,yes

헤더는 처음 나온 순서대로 키를 합친 목록이고, address.city는 중첩 매핑에서 나왔으며, 목록은 JSON 한 칸이고, 없는 키는 빈 칸입니다. 쉼표나 따옴표가 든 칸만 따옴표로 감싸고 yes는 텍스트로 남습니다.

앵커와 병합 키
입력
- &d {host: db, port: 1}
- <<: *d
  port: 2
출력
host,port
db,1
db,2

두 번째 레코드는 앵커의 host를 물려받고 port를 덮어써서 완전한 행이 됩니다. 병합 키 펼치기를 끄면 두 번째 행은 <<.host, <<.port라는 열을 채웁니다.

수식은 무력화하고 숫자는 그대로
입력
- item: =SUM(A1:A9)
  qty: -5
  note: "-5 degrees"
  ok: fine
출력
item,qty,note,ok
'=SUM(A1:A9),-5,'-5 degrees,fine

=나 -로 시작하는 텍스트 칸 두 개에 작은따옴표가 붙고 알림이 개수를 알려 줍니다. YAML 숫자 -5는 건드리지 않습니다.

문서마다 레코드 하나
입력
id: 1
name: Ada
---
id: 2
name: Bo
출력
id,name
1,Ada
2,Bo

자동 모드에서는 문서 둘이 행 둘이 됩니다. 첫 문서만을 고르면 Ada 행만 남고 문서 1개를 뺐다는 알림이 나옵니다.

인덱스별 열, 세미콜론, LF
입력
- id: 1
  tags: [a, b]
- id: 2
  tags: [c]
출력
id;tags.0;tags.1
1;a;b
2;c;

구분자를 세미콜론, 줄 끝을 LF, 배열을 인덱스별 열로 정한 경우입니다. 더 짧은 목록은 두 번째 칸이 빕니다.

매핑 하나와 탭 구분자
입력
server:
  host: a
  ports: [80, 443]
debug: false
ratio: 1.0
출력
server.host	server.ports	debug	ratio
a	[80,443]	false	1.0

목록 대신 매핑이면 한 행이 나옵니다. 목록은 JSON 텍스트로 남고, 정수 값인 실수 1.0은 쓴 모양 그대로 텍스트 1.0으로 적힙니다.

자주 하는 실수

  • 목록이 행으로 늘어나지 않음

    langs: [go, rust] 필드는 JSON 텍스트 한 칸이거나 번호가 붙은 열이 됩니다. 항목마다 한 행이 필요하면 항목이 최상위 목록이 되도록 YAML을 먼저 바꾸세요.

  • 앞의 작은따옴표는 스프레드시트 밖에서는 진짜 글자

    수식 무력화는 -x, +82-10-1234-5678, =B2 같은 문자열 앞에 '를 붙입니다. 엑셀은 이를 숨기지만 스크립트나 DB 가져오기는 값의 일부로 읽습니다. 스프레드시트로 열지 않을 파일에만 옵션을 끄세요.

  • 열 이름이 겹치면 첫 값만 남음

    {a.b: 1, a: {b: 2}} 같은 레코드는 a.b 열을 두 번 만듭니다. 첫 값이 남고 알림이 열 이름을 알려 주므로, 둘 다 필요하면 키 하나의 이름을 바꾸세요.

  • 예외 레코드가 열을 성기게 만듦

    헤더는 모든 레코드에서 나오므로 키가 많은 레코드 하나가 거의 빈 열을 많이 만듭니다. 열이 200개, 행이 50,000개를 넘으면 오류로 멈춥니다.

  • 앞의 0과 긴 숫자

    zip: "02134"는 파일 안에서 그대로지만 엑셀이 열을 숫자로 바꾸면서 0을 지웁니다. 따옴표 없이 02134로 쓴 YAML 값은 CSV를 만들기 전에 이미 숫자 2134이므로, 식별자는 YAML에서 따옴표로 감싸세요.

  • 구분자는 가져오는 쪽과 맞아야 함

    엑셀은 로캘에 따라 세미콜론을 기대하기도 쉼표를 기대하기도 합니다. 행 전체가 한 열에 몰려 들어가면 다른 구분자로 다시 내보내거나 탭을 고르세요.

자주 묻는 질문

YAML CSV 변환은 어떤 모양의 YAML을 기대하나요?

항목마다 레코드 하나인 매핑 목록입니다. 매핑 하나는 한 행, 값만 담긴 목록은 value 열, 여러 문서는 문서마다 레코드 하나가 됩니다.

중첩 매핑은 어떻게 처리되나요?

키를 점으로 이어 붙입니다. address: {city: Seoul}은 address.city 열이 됩니다.

레코드 안의 목록은 어떻게 되나요?

기본은 [1,2] 같은 JSON 텍스트 한 칸입니다. 배열 옵션을 인덱스별 열로 바꾸면 tags.0, tags.1처럼 열이 나뉩니다.

모든 칸에 따옴표가 붙나요?

아니요. 구분자, 큰따옴표, 줄바꿈, 앞뒤 공백이 든 칸만 감싸고 안의 따옴표는 두 번 씁니다. 유효한 RFC 4180 CSV입니다.

앵커와 병합 키도 펼치나요?

네. 별칭은 복사하고 << 병합 키는 기본으로 펼쳐서 물려받은 필드가 행에 나타납니다. 병합 키 펼치기를 끄면 << 열이 대신 생깁니다.

수식 무력화는 무엇을 바꾸나요?

=, +, -, @, 탭, 캐리지 리턴으로 시작하는 텍스트 칸 앞에 '를 붙입니다. YAML 숫자는 바꾸지 않고, 알림이 영향받은 칸 수를 알려 줍니다.

YAML이 업로드되나요?

아니요. YAML을 읽고 CSV를 만드는 일이 모두 브라우저 안에서 이루어지며 서버로 전송되지 않습니다. 한도는 20MiB, 50,000행, 200열입니다.

마지막 업데이트: