메인 콘텐츠로 건너뛰기
가져오기에 사용하는 거의 모든 JSON 포맷은 내보내기에도 사용할 수 있습니다. 가장 널리 쓰이는 형식은 JSONEachRow입니다:
SELECT * FROM sometable FORMAT JSONEachRow
{"path":"Bob_Dolman","month":"2016-11-01","hits":245}
{"path":"1-krona","month":"2017-01-01","hits":4}
{"path":"Ahmadabad-e_Kalij-e_Sofla","month":"2017-01-01","hits":3}
또는 컬럼 이름을 생략하여 디스크 공간을 절약할 수 있는 JSONCompactEachRow를 사용할 수 있습니다:
SELECT * FROM sometable FORMAT JSONCompactEachRow
["Bob_Dolman", "2016-11-01", 245]
["1-krona", "2017-01-01", 4]
["Ahmadabad-e_Kalij-e_Sofla", "2017-01-01", 3]

데이터 타입을 문자열로 재정의하기

ClickHouse는 데이터 타입을 준수하므로 JSON을 표준에 맞게 내보냅니다. 하지만 모든 값을 문자열로 인코딩해야 하는 경우에는 JSONStringsEachRow 포맷을 사용할 수 있습니다:
SELECT * FROM sometable FORMAT JSONStringsEachRow
{"path":"Bob_Dolman","month":"2016-11-01","hits":"245"}
{"path":"1-krona","month":"2017-01-01","hits":"4"}
{"path":"Ahmadabad-e_Kalij-e_Sofla","month":"2017-01-01","hits":"3"}
이제 hits 숫자 컬럼은 문자열로 인코딩됩니다. 문자열로 내보내기는 모든 JSON* 포맷에서 지원되므로, JSONStrings\*JSONCompactStrings\* 포맷을 살펴보십시오:
SELECT * FROM sometable FORMAT JSONCompactStringsEachRow
["Bob_Dolman", "2016-11-01", "245"]
["1-krona", "2017-01-01", "4"]
["Ahmadabad-e_Kalij-e_Sofla", "2017-01-01", "3"]

데이터와 함께 메타데이터 내보내기

애플리케이션에서 널리 사용되는 일반 JSON 포맷은 결과 데이터뿐 아니라 컬럼 타입과 쿼리 통계도 함께 내보냅니다:
SELECT * FROM sometable FORMAT JSON
{
        "meta":
        [
                {
                        "name": "path",
                        "type": "String"
                },
                ...
        ],

        "data":
        [
                {
                        "path": "Bob_Dolman",
                        "month": "2016-11-01",
                        "hits": 245
                },
                ...
        ],

        "rows": 3,

        "statistics":
        {
                "elapsed": 0.000497457,
                "rows_read": 3,
                "bytes_read": 87
        }
}
JSONCompact 포맷은 동일한 메타데이터를 출력하지만, 데이터 자체는 더 간결한 형태로 표시합니다:
SELECT * FROM sometable FORMAT JSONCompact
{
        "meta":
        [
                {
                        "name": "path",
                        "type": "String"
                },
                ...
        ],

        "data":
        [
                ["Bob_Dolman", "2016-11-01", 245],
                ["1-krona", "2017-01-01", 4],
                ["Ahmadabad-e_Kalij-e_Sofla", "2017-01-01", 3]
        ],

        "rows": 3,

        "statistics":
        {
                "elapsed": 0.00074981,
                "rows_read": 3,
                "bytes_read": 87
        }
}
모든 값을 문자열로 인코딩하려면 JSONStrings 또는 JSONCompactStrings 변형을 사용하는 것이 좋습니다.

JSON 데이터와 구조를 내보내는 간결한 방법

데이터와 그 구조를 함께 더 효율적으로 내보내려면 JSONCompactEachRowWithNamesAndTypes 포맷을 사용하십시오:
SELECT * FROM sometable FORMAT JSONCompactEachRowWithNamesAndTypes
["path", "month", "hits"]
["String", "Date", "UInt32"]
["Bob_Dolman", "2016-11-01", 245]
["1-krona", "2017-01-01", 4]
["Ahmadabad-e_Kalij-e_Sofla", "2017-01-01", 3]
컬럼 이름과 타입이 들어 있는 2개의 헤더 행이 앞에 붙는 compact JSON 포맷을 사용합니다. 그런 다음 이 포맷을 사용해 데이터를 다른 ClickHouse 인스턴스(또는 다른 앱)로 적재할 수 있습니다.

파일로 JSON 내보내기

내보낸 JSON 데이터를 파일로 저장하려면 INTO OUTFILE 절을 사용할 수 있습니다:
SELECT * FROM sometable INTO OUTFILE 'out.json' FORMAT JSONEachRow
36838935 rows in set. Elapsed: 2.220 sec. Processed 36.84 million rows, 1.27 GB (16.60 million rows/s., 572.47 MB/s.)
ClickHouse는 약 3,700만 개의 레코드를 JSON 파일로 내보내는 데 단 2초밖에 걸리지 않았습니다. 또한 COMPRESSION 절을 사용해 내보내는 동안 즉시 압축을 적용할 수도 있습니다:
SELECT * FROM sometable INTO OUTFILE 'out.json.gz' FORMAT JSONEachRow
36838935 rows in set. Elapsed: 22.680 sec. Processed 36.84 million rows, 1.27 GB (1.62 million rows/s., 56.02 MB/s.)
시간은 더 걸리지만, 훨씬 더 작은 압축 파일이 생성됩니다:
2.2G    out.json
576M    out.json.gz
마지막 수정일 2026년 6월 10일