Clickhouse 无法解析输入:预期 \t 之前
Clickhouse Cannot parse input: expected \t before
我正在尝试使用 yandex 日志将数据插入 clickhouse api (https://github.com/yndx-metrika/logs_api_integration)
它使用 requests
作为库来发送请求。
我的错误是:
Code: 27, e.displayText() = DB::Exception: Cannot parse input: expected \t before: \n33\t55\t2017-05-05\n33\t55\t2017-05-05\n33\t55\t2017-05-05\n33\t55\t2017-05-05 (version 19.16.4.12)
当我发送请求时,我的查询参数是:
{u'query': u'INSERT INTO db.table FORMAT TabSeparatedWithNames ', u'input_format_allow_errors_num': 99999, u'input_format_tsv_empty_as_default': 1, u'input_format_allow_errors_ratio': 1}
引擎是 MergeTree()
列不可为空
我的数据是
ClientID CounterID Date
55 33 2017-05-05
55 33 2017-05-05
55 33 2017-05-05
55 33 2017-05-05
55 33 2017-05-05
55 33 2017-05-05
55 33 2017-05-05
55 33 2017-05-05
使用时TabSeparatedWithNames需要传递表头(列名):
import requests
CH_USER = 'default'
CH_PASSWORD = ''
SSL_VERIFY = False
host = 'http://localhost:8123'
db = 'db'
table = 'table'
content = 'ClientID\tCounterID\tDate' \
'\n33\t55\t2017-05-05' \
'\n33\t55\t2017-05-05' \
'\n33\t55\t2017-05-05' \
'\n33\t55\t2017-05-05' \
'\n33\t55\t2017-05-05'
content = content.encode('utf-8')
query_dict = {
'query': 'INSERT INTO ' + db + '.' + table + ' FORMAT TabSeparatedWithNames '
}
r = requests.post(host, data=content, params=query_dict, auth=(CH_USER, CH_PASSWORD), verify=SSL_VERIFY)
print(r.text)
测试table架构:
CREATE TABLE table
(
`ClientID` Int32,
`CounterID` Int32,
`Date` date
)
ENGINE = MergeTree
ORDER BY Date
确保您尝试插入的列数(以及列 names/types 本身)在目标中相同 table
我正在尝试使用 yandex 日志将数据插入 clickhouse api (https://github.com/yndx-metrika/logs_api_integration)
它使用 requests
作为库来发送请求。
我的错误是:
Code: 27, e.displayText() = DB::Exception: Cannot parse input: expected \t before: \n33\t55\t2017-05-05\n33\t55\t2017-05-05\n33\t55\t2017-05-05\n33\t55\t2017-05-05 (version 19.16.4.12)
当我发送请求时,我的查询参数是:
{u'query': u'INSERT INTO db.table FORMAT TabSeparatedWithNames ', u'input_format_allow_errors_num': 99999, u'input_format_tsv_empty_as_default': 1, u'input_format_allow_errors_ratio': 1}
引擎是 MergeTree()
列不可为空
我的数据是
ClientID CounterID Date
55 33 2017-05-05
55 33 2017-05-05
55 33 2017-05-05
55 33 2017-05-05
55 33 2017-05-05
55 33 2017-05-05
55 33 2017-05-05
55 33 2017-05-05
使用时TabSeparatedWithNames需要传递表头(列名):
import requests
CH_USER = 'default'
CH_PASSWORD = ''
SSL_VERIFY = False
host = 'http://localhost:8123'
db = 'db'
table = 'table'
content = 'ClientID\tCounterID\tDate' \
'\n33\t55\t2017-05-05' \
'\n33\t55\t2017-05-05' \
'\n33\t55\t2017-05-05' \
'\n33\t55\t2017-05-05' \
'\n33\t55\t2017-05-05'
content = content.encode('utf-8')
query_dict = {
'query': 'INSERT INTO ' + db + '.' + table + ' FORMAT TabSeparatedWithNames '
}
r = requests.post(host, data=content, params=query_dict, auth=(CH_USER, CH_PASSWORD), verify=SSL_VERIFY)
print(r.text)
测试table架构:
CREATE TABLE table
(
`ClientID` Int32,
`CounterID` Int32,
`Date` date
)
ENGINE = MergeTree
ORDER BY Date
确保您尝试插入的列数(以及列 names/types 本身)在目标中相同 table