CSV 파일을 열거나 붙여넣고 Parquet 다운로드를 누르세요. 기본적으로 모든 열은 null을 허용하는 UTF-8 STRING이므로 000917 같은 ID도 앞자리 0을 유지하고, 빈 셀은 null이 됩니다. 모든 값이 맞는 열을 INT64, DOUBLE, BOOLEAN으로 쓰려면 숫자와 true/false 감지를 고르세요. 파일은 JavaScript Parquet 쓰기 라이브러리가 브라우저 안에서 만들며, 업로드되는 것은 없습니다.
CSV를 Parquet으로 변환하는 방법
.csv,.tsv,.txt파일을 열거나 도구 위에 끌어다 놓거나 행을 붙여넣으세요. 입력의 표를 확인하고, 필요하면 가져오기 설정에서 구분 기호, 머리글 행, 인코딩을 지정하세요.- 값 유형, 압축, 빈 텍스트를 null로 쓰기 여부, 행 그룹당 행 수를 정하세요.
- Parquet 다운로드를 누른 다음, 받은
.parquet파일을 DuckDB, pandas, Polars, Spark 같은 Parquet 리더에서 열어 읽으면 됩니다.
같은 설정으로 여러 파일을 변환하려면 일괄 변환: 여러 파일 변환을 고르세요. 파일마다 Parquet 파일이 하나씩 만들어지고 ZIP 하나로 함께 다운로드됩니다. 일괄 변환에서는 파일 하나가 25 MB 이하여야 합니다.
스키마와 열 유형
열 이름은 머리글 행에 적힌 그대로 가져옵니다. 빈 머리글은 Column 3, 중복된 머리글은 name (2)가 되므로 Parquet 열 이름은 모두 고유합니다. 모든 열은 선택 사항(null 허용)입니다.
| 모든 값을 텍스트로 유지 | 기본값입니다. 모든 열이 UTF-8 문자열로 주석된 BYTE_ARRAY이며, 앞자리 0, 1,5, N/A, 날짜 형식까지 각 값을 바이트 그대로 담습니다. |
|---|---|
| 정수(감지 사용 시) | 비어 있지 않은 모든 값이 앞자리 0 없는 정수이고 −9,007,199,254,740,991부터 9,007,199,254,740,991 사이일 때 INT64가 됩니다. 더 큰 정수가 있으면 그 열은 텍스트로 남습니다. |
| 소수(감지 사용 시) | 모든 값이 변환해도 손상되지 않는, 유효 숫자 15자리 이하의 일반 소수일 때 DOUBLE이 됩니다. 12와 2.5가 섞인 열도 DOUBLE이 됩니다. |
| true / false(감지 사용 시) | 모든 값이 대소문자와 상관없이 true나 false일 때 BOOLEAN이 됩니다. |
| 날짜와 타임스탬프 | 두 모드 모두 2026-03-01T08:00:00Z처럼 STRING으로 남습니다. 쿼리 엔진에서 변환하세요. 예를 들어 DuckDB에서는 CAST(reading_at AS TIMESTAMP)입니다. |
유형이 지정된 열에서 빈 셀은 항상 null입니다. 문자열 열에서는 빈 텍스트를 null로 쓰기(기본으로 켜짐)가 빈 셀을 null로 쓸지 빈 문자열 ""로 쓸지 정합니다.
압축과 행 그룹
| Snappy(빠름, 흔한 기본값) | 기본 코덱입니다. 일반적인 Parquet 리더는 모두 지원합니다. |
|---|---|
| Gzip(더 작음) | 대개 Snappy보다 파일이 작습니다. 일부 경량 리더는 gzip을 지원하지 않습니다. |
| 없음 | 압축하지 않습니다. 디버깅용이거나 압축 해제 기능이 없는 도구용입니다. |
| 행 그룹당 행 수 | 기본값은 100,000이며 1,000~1,000,000 사이로 정합니다. 브라우저 작업 공간은 최대 10만 행이므로 기본값이면 행 그룹 하나를 씁니다. 리더가 건너뛰거나 병렬로 읽을 수 있도록 행 그룹을 여러 개 만들려면 더 작은 값을 정하세요. |
파일 메타데이터에는 쓰기 라이브러리(hyparquet)와 created_by_app 키도 기록됩니다.
CSV를 Parquet으로 바꿀 때 흔한 문제
- 숫자 열이 STRING입니다. 모든 값을 텍스트로 유지가 선택되어 있거나,
1,234,12 kg,007, 16자리 소수처럼 일반 숫자가 아닌 값이 있습니다. 열 프로필이나 CSV 뷰어로 찾으세요. - 다른 도구에서 ID의 앞자리 0이 사라졌습니다. 이 변환기는 앞자리 0이 있는 열을 절대 숫자로 만들지 않습니다. ID가 바뀌었다면 변환하기 전에 CSV를 스프레드시트에서 열었다가 저장했을 가능성이 큽니다. CSV 뷰어에서 원본 파일을 확인하세요.
- 모든 값이 한 열에 들어 있습니다. 구분 기호를 잘못 추측했습니다. 가져오기 설정에서 고르세요.
- 파일이 이 도구에서 다루기에 너무 큽니다. Parquet 변환은 25 MB, 10만 행, 250열, 200만 셀까지의 파일에서 동작합니다. CSV를 나눈 다음 나뉜 파일을 변환하거나, 다운로드 크기만 줄이면 된다면 gzip으로 CSV를 압축하세요.
한도와 개인정보 보호
CSV는 브라우저 작업 공간에서 열 수 있어야 합니다. 25 MB, 10만 행, 250열, 200만 셀까지입니다. Parquet 파일은 메모리 안에서 한 번에 만들어집니다.
쓰기 라이브러리는 순수 JavaScript로 된 hyparquet-writer이며 변환할 때만 불러옵니다. WebAssembly나 서버 단계는 없습니다. 이 탭의 백그라운드 워커에서 실행되므로 페이지가 멈추지 않고, 취소로 중단할 수 있습니다. CSV는 서버로 보내지 않습니다. 쿼리할 수 있는 데이터베이스 파일이 필요하면 CSV를 SQLite로를 사용하세요.
예시: PyArrow로 다시 읽은 센서 측정값
앞자리 0이 있는 ID, ISO 타임스탬프, 빈 셀, 따옴표 안의 쉼표가 있는 센서 측정값을 숫자와 true/false 감지와 기본 Snappy 압축으로 변환한 뒤 PyArrow로 다시 읽은 결과입니다. temp_c는 DOUBLE, ok는 BOOLEAN이 되었고, sensor_id와 reading_at은 문자열로 남았습니다. 기본값인 모든 값을 텍스트로 유지를 쓰면 다섯 열이 모두 string이고 ok도 적힌 그대로 TRUE를 유지합니다.
sensor_id,reading_at,temp_c,ok,site 000917,2026-03-01T08:00:00Z,21.5,true,Lab 2 000918,2026-03-01T08:05:00Z,,false, 000919,2026-03-01T08:10:00Z,-3,TRUE,"Roof, north"
schema:
sensor_id: string
reading_at: string
temp_c: double
ok: bool
site: string
rows: 3, row groups: 1, compression: SNAPPY
{'sensor_id': '000917', 'reading_at': '2026-03-01T08:00:00Z', 'temp_c': 21.5, 'ok': True, 'site': 'Lab 2'}
{'sensor_id': '000918', 'reading_at': '2026-03-01T08:05:00Z', 'temp_c': None, 'ok': False, 'site': None}
{'sensor_id': '000919', 'reading_at': '2026-03-01T08:10:00Z', 'temp_c': -3.0, 'ok': True, 'site': 'Roof, north'}자주 묻는 질문
변환하려면 CSV를 업로드해야 하나요?
아니요. Parquet 파일은 브라우저 탭의 워커에서 JavaScript 라이브러리가 만들고, 다운로드 파일도 기기 안에서 생성됩니다.
날짜를 Parquet의 DATE나 TIMESTAMP로 쓰지 않는 이유는 무엇인가요?
CSV의 날짜는 형식과 시간대가 제각각이라, 몰래 추측하면 값이 어긋날 수 있습니다. 파일에 적힌 그대로 문자열로 쓰니, 형식과 시간대를 직접 정할 수 있는 DuckDB, Spark, pandas에서 변환하세요.
어떤 압축을 골라야 하나요?
Snappy는 사실상 모든 Parquet 리더에서 동작합니다. 파일 크기가 더 중요하고 리더가 지원한다면 gzip을, 디버깅할 때만 없음을 고르세요.