> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Экспорт JSON

> Как экспортировать JSON-данные из ClickHouse

Почти любой JSON-формат, используемый для импорта, можно использовать и для экспорта. Самый популярный — [`JSONEachRow`](/docs/ru/reference/formats/JSON/JSONEachRow):

```sql theme={null}
SELECT * FROM sometable FORMAT JSONEachRow
```

```response theme={null}
{"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`](/docs/ru/reference/formats/JSON/JSONCompactEachRow), чтобы сэкономить место на диске, не записывая имена столбцов:

```sql theme={null}
SELECT * FROM sometable FORMAT JSONCompactEachRow
```

```response theme={null}
["Bob_Dolman", "2016-11-01", 245]
["1-krona", "2017-01-01", 4]
["Ahmadabad-e_Kalij-e_Sofla", "2017-01-01", 3]
```

<div id="overriding-data-types-as-strings">
  ## Переопределение типов данных в строки
</div>

ClickHouse учитывает типы данных и экспортирует JSON в соответствии со стандартами. Но если нужно, чтобы все значения кодировались как строки, можно использовать формат [JSONStringsEachRow](/docs/ru/reference/formats/JSON/JSONStringsEachRow):

```sql theme={null}
SELECT * FROM sometable FORMAT JSONStringsEachRow
```

```response theme={null}
{"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\*`:

```sql theme={null}
SELECT * FROM sometable FORMAT JSONCompactStringsEachRow
```

```response theme={null}
["Bob_Dolman", "2016-11-01", "245"]
["1-krona", "2017-01-01", "4"]
["Ahmadabad-e_Kalij-e_Sofla", "2017-01-01", "3"]
```

<div id="exporting-metadata-together-with-data">
  ## Экспорт метаданных вместе с данными
</div>

Формат [JSON](/docs/ru/reference/formats/JSON/JSON), широко используемый в приложениях, экспортирует не только результирующие данные, но и типы столбцов и статистику запроса:

```sql theme={null}
SELECT * FROM sometable FORMAT JSON
```

```response theme={null}
{
        "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](/docs/ru/reference/formats/JSON/JSONCompact) выведет те же метаданные, но сами данные будут представлены в компактной форме:

```sql theme={null}
SELECT * FROM sometable FORMAT JSONCompact
```

```response theme={null}
{
        "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`](/docs/ru/reference/formats/JSON/JSONStrings) или [`JSONCompactStrings`](/docs/ru/reference/formats/JSON/JSONCompactStrings), чтобы представлять все значения в виде строк.

<div id="compact-way-to-export-json-data-and-structure">
  ## Компактный способ экспортировать JSON-данные и их структуру
</div>

Более эффективный способ получить данные вместе с их структурой — использовать формат [`JSONCompactEachRowWithNamesAndTypes`](/docs/ru/reference/formats/JSON/JSONCompactEachRowWithNamesAndTypes):

```sql theme={null}
SELECT * FROM sometable FORMAT JSONCompactEachRowWithNamesAndTypes
```

```response theme={null}
["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]
```

При этом будет использоваться компактный JSON-формат с двумя строками заголовка в начале: с именами столбцов и их типами. Затем этот формат можно использовать для загрузки данных в другой экземпляр ClickHouse (или другие приложения).

<div id="exporting-json-to-a-file">
  ## Экспорт JSON в файл
</div>

Чтобы сохранить экспортированные данные JSON в файл, можно использовать конструкцию [INTO OUTFILE](/docs/ru/reference/statements/select/into-outfile):

```sql theme={null}
SELECT * FROM sometable INTO OUTFILE 'out.json' FORMAT JSONEachRow
```

```response theme={null}
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 потребовалось всего 2 секунды, чтобы экспортировать почти 37 миллионов записей в JSON‑файл. Экспорт также можно выполнить с помощью предложения `COMPRESSION`, чтобы включить сжатие на лету:

```sql theme={null}
SELECT * FROM sometable INTO OUTFILE 'out.json.gz' FORMAT JSONEachRow
```

```response theme={null}
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.)
```

Это занимает больше времени, но позволяет получить гораздо меньший сжатый файл:

```bash theme={null}
2.2G    out.json
576M    out.json.gz
```
