This commit is contained in:
annvsh 2020-10-23 22:51:08 +07:00
parent 8519f66555
commit 1399f8889e
2 changed files with 31 additions and 41 deletions

View File

@ -1342,34 +1342,29 @@ Result:
## RawBLOB {#rawblob}
This format slurps all input data into a single value. This format can only parse a table with a single field of type [String](../sql-reference/data-types/string.md) or similar.
When an empty value is passed to the input, ClickHouse generates an exception:
The result is output in binary format without delimiters and escaping. If more than one value is output, the format is ambiguous, and it will be impossible to read the data back.
The difference between `RawBLOB` and `TSVRaw`:
- data is output in binary format, no escaping;
- no delimiters between values;
- no newline at the end of each value.
In `Raw BLOB` unlike `Raw Binary` strings are output without their length.
When an empty value is passed to the `RawBLOB` input, ClickHouse generates an exception:
``` text
Code: 108. DB::Exception: No data to insert
```
The result is output in binary format without delimiters and escaping. If more than one value is output, the format is ambiguous, and it will be impossible to read the data back.
**Example**
``` bash
CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
. "$CURDIR"/../shell_config.sh
${CLICKHOUSE_CLIENT} -n --query "
DROP TABLE IF EXISTS t;
CREATE TABLE t (a LowCardinality(Nullable(String))) ENGINE = Memory;
${CLICKHOUSE_CLIENT} --query "INSERT INTO t FORMAT RawBLOB" < ${BASH_SOURCE[0]}
cat ${BASH_SOURCE[0]} | md5sum
${CLICKHOUSE_CLIENT} -n --query "SELECT * FROM t FORMAT RawBLOB" | md5sum
${CLICKHOUSE_CLIENT} --query "
DROP TABLE t;
"
$ clickhouse-client --query "DROP TABLE IF EXISTS {some_table};"
$ clickhouse-client --query "CREATE TABLE {some_table} (a String) ENGINE = Memory;"
$ cat {filename} | clickhouse-client --query="INSERT INTO {some_table} FORMAT RawBLOB"
$ clickhouse-client --query "SELECT * FROM {some_table} FORMAT RawBLOB" | md5sum
$ clickhouse-client --query "DROP TABLE {some_table};"
```
Result:

View File

@ -1146,35 +1146,30 @@ SELECT * FROM line_as_string;
## RawBLOB {#rawblob}
Этот формат считывает все входные данные в одно значение. Этот формат может парсить только таблицу с одним полем типа [String](../sql-reference/data-types/string.md) или подобным ему.
При передаче на вход пустого значения ClickHouse сгенерирует исключение:
Этот формат считывает все входные данные в одно значение. Формат может парсить только таблицу с одним полем типа [String](../sql-reference/data-types/string.md) или подобным ему.
Результат выводится в бинарном виде без разделителей и экранирования. При выводе более одного значения формат неоднозначен и будет невозможно прочитать данные снова.
Отличия между `RawBLOB` и `TabSeparatedRaw`:
- данные выводятся в бинарном виде, без экранирования;
- нет разделителей между значениями;
- нет новой строки в конце каждого значения.
В `RawBLOB`, в отличие от `RowBinary`, строки выводятся без их длины.
При передаче на вход `RawBLOB` пустого значения ClickHouse сгенерирует исключение:
``` text
Code: 108. DB::Exception: No data to insert
```
Результат выводится в двоичном формате без разделителей и экранирования. При выводе более одного значения формат неоднозначен и будет невозможно прочитать данные снова.
**Пример**
``` bash
CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
. "$CURDIR"/../shell_config.sh
${CLICKHOUSE_CLIENT} -n --query "
DROP TABLE IF EXISTS t;
CREATE TABLE t (a LowCardinality(Nullable(String))) ENGINE = Memory;
${CLICKHOUSE_CLIENT} --query "INSERT INTO t FORMAT RawBLOB" < ${BASH_SOURCE[0]}
cat ${BASH_SOURCE[0]} | md5sum
${CLICKHOUSE_CLIENT} -n --query "SELECT * FROM t FORMAT RawBLOB" | md5sum
${CLICKHOUSE_CLIENT} --query "
DROP TABLE t;
"
$ clickhouse-client --query "DROP TABLE IF EXISTS {some_table};"
$ clickhouse-client --query "CREATE TABLE {some_table} (a String) ENGINE = Memory;"
$ cat {filename} | clickhouse-client --query="INSERT INTO {some_table} FORMAT RawBLOB"
$ clickhouse-client --query "SELECT * FROM {some_table} FORMAT RawBLOB" | md5sum
$ clickhouse-client --query "DROP TABLE {some_table};"
```
Результат: