Merge pull request #34352 from bigo-sg/clickhouse_local_format

Default input and output formats that can be overriden by --input-format and --output-format.
This commit is contained in:
Kruglov Pavel 2022-02-14 14:09:59 +03:00 committed by GitHub
commit 2bf15d6b5b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 61 additions and 2 deletions

View File

@ -337,8 +337,9 @@ std::string LocalServer::getInitialCreateTableQuery()
format_from_file_name = FormatFactory::instance().getFormatFromFileName(file_name, false);
}
auto data_format
= backQuoteIfNeed(config().getString("table-data-format", format_from_file_name.empty() ? "TSV" : format_from_file_name));
auto data_format = backQuoteIfNeed(
config().getString("table-data-format", config().getString("format", format_from_file_name.empty() ? "TSV" : format_from_file_name)));
if (table_structure == "auto")
table_structure = "";

View File

@ -0,0 +1,33 @@
File generated:
Options: --input-format=CSV --output-format JSONEachRow --format TSV
{"num1":"0","num2":"0"}
{"num1":"1","num2":"2"}
{"num1":"2","num2":"4"}
{"num1":"3","num2":"6"}
{"num1":"4","num2":"8"}
{"num1":"5","num2":"10"}
{"num1":"6","num2":"12"}
Options: --input-format=CSV --format TSV
0 0
1 2
2 4
3 6
4 8
5 10
6 12
Options: --output-format=JSONEachRow --format CSV
{"num1":"0","num2":"0"}
{"num1":"1","num2":"2"}
{"num1":"2","num2":"4"}
{"num1":"3","num2":"6"}
{"num1":"4","num2":"8"}
{"num1":"5","num2":"10"}
{"num1":"6","num2":"12"}
Options: --format CSV
0,0
1,2
2,4
3,6
4,8
5,10
6,12

View File

@ -0,0 +1,25 @@
#!/usr/bin/env bash
CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
# shellcheck source=../shell_config.sh
. "$CURDIR"/../shell_config.sh
SAMPLE_FILE="$CURDIR/02206_sample_data.csv"
echo 'File generated:'
${CLICKHOUSE_LOCAL} -q "SELECT number, number * 2 from numbers(7) FORMAT TSV" | tr '\t' ',' >"$SAMPLE_FILE"
echo "Options: --input-format=CSV --output-format JSONEachRow --format TSV"
cat "$SAMPLE_FILE" | ${CLICKHOUSE_LOCAL} --input-format CSV --output-format JSONEachRow --format TSV --structure='num1 Int64, num2 Int64' --query='SELECT * from table'
echo "Options: --input-format=CSV --format TSV"
cat "$SAMPLE_FILE" | ${CLICKHOUSE_LOCAL} --input-format CSV --format TSV --structure='num1 Int64, num2 Int64' --query='SELECT * from table'
echo "Options: --output-format=JSONEachRow --format CSV"
cat "$SAMPLE_FILE" | ${CLICKHOUSE_LOCAL} --output-format JSONEachRow --format CSV --structure='num1 Int64, num2 Int64' --query='SELECT * from table'
echo "Options: --format CSV"
cat "$SAMPLE_FILE" | ${CLICKHOUSE_LOCAL} --format CSV --structure='num1 Int64, num2 Int64' --query='SELECT * from table'
rm "$SAMPLE_FILE"