이 CSV YAML 변환기는 CSV나 TSV의 각 레코드를 YAML 시퀀스 안의 매핑으로 바꾸고, 헤더 행이 키가 됩니다. 테스트 데이터, 앤서블 변수 파일, Jekyll·Hugo의 _data 폴더 같은 정적 사이트 데이터, 스프레드시트보다 YAML로 검토하기 쉬운 설정에 유용합니다.
결과를 정하는 스위치는 두 개입니다. 기본으로 켜진 ‘숫자·불리언·null 감지’는 열 전체를 보고 타입을 정합니다. 평범한 숫자만 있는 열은 YAML 숫자, true와 false만 있는 열은 불리언이 되고, 빈 셀과 NA 같은 단어는 null이 되며, 02139 같은 우편번호는 문자열로 남습니다. 역시 기본으로 켜진 ‘YAML 1.1 단어 따옴표 처리’는 오래된 YAML 파서가 불리언, 숫자, 날짜로 바꿀 텍스트에 따옴표를 붙여, 국가 코드 NO가 false가 되지 않고 문자열로 남게 합니다.
YAML은 페이지에 포함된 YAML 라이브러리가 브라우저 안에서 쓰며, 입력한 내용은 서버로 전송되지 않습니다. 입력 한도는 20 MiB, 데이터 행 50,000개, 열 200개입니다.
사용 방법
CSV 붙여 넣기 또는 열기
행을 붙여 넣거나 .csv, .tsv 파일을 끌어다 놓거나 예제로 시작합니다. 따옴표로 감싼 셀은 여러 줄에 걸쳐도 되고, LF, CRLF, 예전 Mac의 CR 줄 끝을 모두 읽으며, UTF-8 BOM은 제거됩니다.
구분자와 헤더 확인
‘자동 감지’는 앞쪽 레코드들에서 열 수가 가장 일정하게 나오는 쪽을 쉼표, 세미콜론, 탭, 파이프 중에서 고르고, 입력창 아래 배지에 결과를 보여 줍니다. 헤더를 키로 쓰려면 ‘첫 행은 헤더’를 켜 두고, 끄면 키가 column_1, column_2 식으로 붙습니다.
값의 타입 정하기
‘숫자·불리언·null 감지’를 켠 상태라면 내보낸 파일에 맞게 ‘null로 볼 단어’를 고칩니다.
1.10같은 버전 문자열이나 우연히 숫자로만 된 코드처럼 모든 값이 텍스트로 남아야 한다면 감지를 끄세요.YAML 옵션 정하기
모든 파서가 YAML 1.2라고 확신할 수 없다면 ‘YAML 1.1 단어 따옴표 처리’를 켜 둡니다. ‘들여쓰기’(공백 2칸 또는 4칸)는 여러 줄 값의 각 줄이 키 아래로 얼마나 들여쓰일지를 정합니다.
복사 또는 다운로드
안내와 열마다 정해진 타입을 보여 주는 ‘파일을 읽은 결과’ 패널을 확인한 뒤 YAML을 복사하거나 data.yaml로 내려받습니다.
작동 원리
타입은 CSV 열에서 정해짐
감지가 켜져 있으면 YAML을 쓰기 전에 열마다 타입을 먼저 정합니다. 채워진 셀이 모두 앞자리 0이나 천 단위 구분 기호 없는 평범한 숫자일 때만 숫자 열이 되고, 모두 true나 false일 때만 불리언 열이 됩니다. 이 값들은 실제 숫자와 불리언으로 YAML 작성기에 넘어가 id: 1, active: true처럼 따옴표 없이 쓰이고, 빈 셀과 null 단어는 null이 됩니다.
텍스트도 기본은 따옴표 없이 쓰지만, YAML 파서가 다른 타입으로 읽을 수 있는 값이면 큰따옴표로 감쌉니다. 감지를 껐을 때 id: "1"에 따옴표가 붙는 이유가 이것입니다. 이제 이 값은 문자열 1이고, 따옴표가 없으면 다시 읽을 때 숫자가 되기 때문입니다.
| CSV 열 | 감지 켬 | 감지 끔 |
|---|---|---|
| 1, 2 | 1 | "1" |
| 9.5, NA | 9.5와 null | "9.5"와 NA |
| true, false | true | "true" |
| 빈 셀 | null | "" |
| 007, 008 | "007" | "007" |
| 2026-03-14 | "2026-03-14" | "2026-03-14" |
YAML 1.1 단어와 따옴표 스위치
YAML 1.2는 true와 false만 불리언으로 보고 코어 스키마에 타임스탬프가 없습니다. 하지만 PyYAML, Ruby의 Psych를 비롯한 많은 로더는 아직 YAML 1.1을 따릅니다. 여기서는 대소문자와 관계없이 yes, no, on, off, y, n이 불리언이고, 12:30은 60진수 정수, 1_000은 1000, 2026-03-14는 날짜입니다. ‘YAML 1.1 단어 따옴표 처리’가 켜져 있으면 이런 문자열을 키까지 모두 따옴표로 감싸서 두 버전에서 같은 뜻이 되게 합니다.
끄면 이 문자열들이 따옴표 없이 쓰입니다. YAML 1.2로는 맞지만 1.1 로더에서는 뜻이 바뀝니다. 국가 코드 목록에서 노르웨이 NO가 false가 되는 사례가 대표적입니다. 007이나 0x1F처럼 YAML 1.2에서도 숫자인 값은 어느 쪽이든 따옴표가 붙습니다.
문서의 모양
문서는 레코드마다 매핑 하나가 들어 있는 블록 시퀀스이고, 키는 헤더 순서를 따릅니다. %YAML 지시자나 --- 표시는 붙지 않습니다. 줄바꿈이 든 값은 리터럴 블록 스칼라(|-)로 쓰여 모든 줄이 유지되고 마지막 줄바꿈만 빠집니다. - , 공백, @·!·&·* 같은 지시 문자로 시작하거나 : , #가 들어 있는 값은 목록 항목, 앵커, 매핑, 주석으로 읽히지 않도록 따옴표로 감쌉니다. first name처럼 공백이 든 키는 따옴표 없이도 유효합니다.
- id: 1
name: Ari
note: |-
line1
line2실제 예시
id,name,score,active,joined
1,Ari,9.5,true,2026-03-14
2,Bea,NA,false,- id: 1
name: Ari
score: 9.5
active: true
joined: "2026-03-14"
- id: 2
name: Bea
score: null
active: false
joined: null기본 옵션입니다. id와 score는 숫자 열이고, NA와 비어 있는 joined 셀은 null이 됐습니다. 날짜는 YAML 1.1이 타임스탬프로 읽기 때문에 따옴표가 붙었습니다.
country,answer,time,code
NO,no,12:30,007
SE,yes,1_000,0x1F- country: "NO"
answer: "no"
time: "12:30"
code: "007"
- country: SE
answer: "yes"
time: "1_000"
code: "0x1F"‘YAML 1.1 단어 따옴표 처리’가 켜진 기본 상태입니다. 따옴표가 없으면 PyYAML에서 NO, no, yes는 불리언, 12:30은 60진수 숫자, 1_000은 정수 1000이 됩니다. 007과 0x1F는 평범한 숫자가 아니어서 code 열은 텍스트입니다.
country,answer,time,code
NO,no,12:30,007
SE,yes,1_000,0x1F- country: NO
answer: no
time: 12:30
code: "007"
- country: SE
answer: yes
time: 1_000
code: "0x1F"‘YAML 1.1 단어 따옴표 처리’를 끈 결과입니다. 이 단어들이 문자열인 YAML 1.2로는 맞지만, YAML 1.1 로더는 NO, no, yes를 불리언으로 읽습니다. 007과 0x1F는 YAML 1.2에서도 숫자로 읽히므로 따옴표가 남습니다.
first name,note
Ari,"line1
line2"
Bea,'q': #x- first name: Ari
note: |-
line1
line2
- first name: Bea
note: "'q': #x"줄바꿈은 두 줄을 그대로 지키는 리터럴 블록 스칼라가 됐습니다. 콜론과 #이 든 값은 매핑이나 주석으로 읽히지 않도록 따옴표로 감쌌고, 공백이 든 키에는 따옴표가 필요 없습니다.
id,qty,note
1,,NA
2,3,ok- id: "1"
qty: ""
note: NA
- id: "2"
qty: "3"
note: ok‘숫자·불리언·null 감지’를 끈 결과입니다. 모든 값이 문자열이라 1, 2, 3은 문자열로 남도록 따옴표가 붙고, 빈 셀은 빈 문자열, NA는 평범한 텍스트입니다.
자주 하는 실수
버전 번호의 끝자리 0이 사라짐
1.10,2.0같은 버전 열은 평범한 숫자로만 되어 있어서 감지가 켜져 있으면1.1과2로 쓰입니다. 이런 열이 있으면 감지를 끄거나, 텍스트가 섞인 열에 코드를 두세요.긴 ID는 일부러 문자열로 남김
20자리 주문 번호나 소수점 아래 19자리 값처럼 JavaScript 숫자가 반올림해 버릴 값이 있으면 그 열은 텍스트로 남아
id: "12345678901234567890"처럼 따옴표가 붙습니다. 많은 YAML 로더도 이런 숫자를 반올림합니다. 해당 열 이름은 안내에 표시됩니다.불리언처럼 보이는 키
‘YAML 1.1 단어 따옴표 처리’가 켜져 있으면
no,on,y같은 헤더는 따옴표 키가 됩니다. 끄면 따옴표 없는 키가 되어 YAML 1.1 로더가 불리언으로 읽으므로, 문자열 키로 조회하면 찾지 못합니다.null과 빈 문자열은 다름
감지가 켜져 있으면 빈 셀은
null, 꺼져 있으면""로 쓰입니다. 많은 애플리케이션이 값 없음과 빈 문자열을 다르게 다루므로, 파일마다 바꾸지 말고 받는 쪽이 기대하는 방식 하나를 고르세요.큰 파일은 YAML이 길어짐
레코드마다 모든 키가 반복되므로 YAML은 CSV보다 몇 배 길어집니다. 결과가 아주 크면 결과 패널에는 앞쪽 줄만 보이지만, 복사와 다운로드에는 문서 전체가 들어갑니다.
자주 묻는 질문
어떤 값에는 따옴표가 붙고 어떤 값에는 안 붙는 이유는?
YAML 파서가 다른 것으로 읽을 수 있는 값에만 따옴표를 붙입니다. 숫자, 불리언, null, 날짜처럼 보이는 텍스트나, - 나 @로 시작하거나 : 가 들어 있는 텍스트가 그렇습니다. 타입이 정해진 열의 숫자와 불리언은 따옴표 없이 쓰입니다.
모든 값을 문자열로 남길 수 있나요?
네. ‘숫자·불리언·null 감지’를 끄세요. 그러면 모든 셀이 적힌 텍스트 그대로 쓰이고, 숫자나 불리언처럼 보이는 값에는 따옴표가 붙어 파일을 읽을 때도 문자열로 남습니다.
출력은 어느 YAML 버전용인가요?
‘YAML 1.1 단어 따옴표 처리’를 켜면 YAML 1.1과 1.2 파서에서 똑같이 읽힙니다. 끄면 평범한 YAML 1.2입니다. 어느 쪽이든 버전 지시자나 문서 시작 표시는 붙지 않습니다.
id 열을 키로 하는 매핑으로 만들 수 있나요?
바로는 안 됩니다. 출력은 항상 레코드마다 매핑 하나인 목록입니다. 짧은 스크립트나 수작업으로 id를 키로 옮기세요.
셀 안의 쉼표와 줄바꿈도 처리되나요?
네. RFC 4180을 따르므로 따옴표로 감싼 셀에 구분자, 두 번 쓴 따옴표, 줄바꿈이 들어갈 수 있습니다. 여러 줄 값은 모든 줄을 지키는 리터럴 블록 스칼라로 쓰입니다.
CSV가 업로드되나요?
아니요. 입력한 내용은 브라우저 안에서 처리되며 서버로 전송되지 않습니다. 호스트 이름이나 내부 설정값이 든 설정 시트를 다룰 때 중요한 점입니다.
마지막 업데이트:
