当前位置: 首页 > 知识库问答 >
问题:

从内流线协议写入QuestDB的问题

孟翰海
2023-03-14
    null
    null
CREATE TABLE my_table(
    location SYMBOL,
    car_brand SYMBOL,
    ts TIMESTAMP,
    kmph FLOAT,
    age INT
) timestamp(ts)  PARTITION BY MONTH;
import time
import socket
HOST = 'localhost'
PORT = 9009
# For UDP, change socket.SOCK_STREAM to socket.SOCK_DGRAM
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    sock.connect((HOST, PORT))
    sock.send('my_table,location=london,car_brand=vw kmph=281.14000000,age=2 1420701827750051000\n'.encode())
except socket.error as e:
    print("Got error: %s" % (e))
sock.close()
  • 它不向表写入任何内容(表在此之后没有行),也不会引发任何错误
  • 如果它无法写入,我预计会出现错误。

然后我想可能与指定的时间戳/分区有关,所以我创建了一个新表:

CREATE TABLE my_table_v2(
    location SYMBOL,
    car_brand SYMBOL,
    ts TIMESTAMP,
    kmph FLOAT,
    age INT
);

向它写入也会产生同样的结果--什么都没写。

CREATE TABLE my_empty_table();
CREATE TABLE my_empty_table(smth INT);
ALTER TABLE my_empty_table
DROP COLUMN smth;

理想情况下,我希望定义模式,然后写入表,理想情况下,如果写入失败,我希望以某种方式捕获它。

共有1个答案

单于亮
2023-03-14

第一个python示例在QuestDB日志中引发错误:

E i.q.c.l.t.LineTcpMeasurementScheduler mismatched column and value types [table=so_table, column=kmph, columnType=FLOAT, valueType=DOUBLE]

如果表具有kmphdouble列类型。age也会引发类似的解析错误。您要创建的架构是

sql prettyprint-override">CREATE TABLE new_ilp_table(
    location SYMBOL,
    timestamp TIMESTAMP,
    car_brand SYMBOL,
    kmph double,
    age long
) timestamp(timestamp)  PARTITION BY MONTH;

因此需要更改以下类型:

    null

这适用于6.0的测试版:

docker pull questdb/questdb:6.0.0-beta-linux-amd64
docker run -p 9000:9000 -p 8812:8812 -p 9009:9009 \ 
questdb/questdb:6.0.0-beta-linux-amd64

创建表的SQL

CREATE TABLE ilp_table(
    location SYMBOL,
    car_brand SYMBOL,
    kmph FLOAT,
    age INT,
    ts TIMESTAMP
) timestamp(ts)  PARTITION BY MONTH;

写到此表的Python示例

import time
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
  sock.connect(('localhost', 9009))
  sock.send(('master_ilpf_table,location=london,car_brand=vw kmph=1.1,age=2i %d\n' %(time.time_ns())).encode())
except socket.error as e:
  print("Got error: %s" % (e))
sock.close()
 类似资料:
  • +--------+ +---------------+ | |--(A)- Authorization Request ->| Resource | | | | Owner | | |<-(B)-- Au

  • 问题内容: protocol BasePresenterProtocol : class {} protocol DashboardPresenterProtocol : BasePresenterProtocol {} 在上面的代码中,我在下一行收到错误 ,但未确认协议,但我已在中声明。虽然我已经宣布 为什么会出现此错误?请让我知道我在这段代码中做错了什么。 问题答案: 您不能使用type 属性

  • 我正在使用line协议和Python写入influxDB。下面是创建数据库和工作正常的代码。 我想在下面写到influxDB中使用行协议的示例数据 我正在使用最新版本的InfluxDB支持行协议。 知道Client.Write语句对于python客户机是什么样子吗?

  • 我试图在共享的go模块中创建共享的原型定义,但我运气不佳。具体来说: -我想要一个包含共享定义的模块原型中的原型文件。 -模块原型中的其他原型文件将引用共享定义。 -模块原型-使用将引用模块原型(通过go.mod) -模块原型-使用go代码将导入和使用模块原型中的定义 -两个模块都存储在github.com 我无法使各种包名称对齐。不管我用什么,总会有失败的。目前,模块protos没有任何错误,但

  • 点击此处可下载并查看多方主体协议请将多方主体协议下载打印并按要求填写,并将填好的协议快递至: 地址:北京市海淀区东北旺西路8号院尚东数字山谷B区1号楼 收件人:企业级事业部,联系方式:010-83041496填写要求: 甲方处填写客户已经注册或开户使用的公司名称 甲方关联公司名录处填写贵公司将要关联的公司名称(可以有多个) 盖章处需加盖甲方及其关联公司的公章 乙方名称为必填,(名称:滴滴出行科技有

  • QuestDB 是用于时间序列数据的高性能开源 SQL 数据库。它使用面向列的方法、大量并行向量化执行、SIMD 指令以及一系列低延迟技术。整个代码库是从头开始构建的,没有依赖关系,并且 100% 没有垃圾回收。QuestDB 实现了SQL,并使用本地扩展对其进行了时间序列扩展。 它公开了 PostgreSQL 有线协议、高性能 REST API,并支持InfluxDB Line Protocol