将 ILP 文件上传到 QuestDB 的最佳方式是什么?扩展

问题描述 投票:0回答:1

1年零7个月前有一个同标题的问题,该问题已关闭。

我使用了答案中的脚本

import socket
import sys

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

def send_utf8(msg):
    print(msg)
    sock.sendall(msg.encode())

if __name__ == '__main__':
    try:
        sock.connect(('localhost', 9009))
        with open("YOUR_FILE") as infile:
            for line in infile:
                # print(line)
                send_utf8(line)
    except socket.error as e:
        sys.stderr.write(f'Got error: {e}')
    sock.close()

它可以工作,但几秒钟后我收到一个错误:

出现错误:[Errno 32] 管道破损

我尝试用 sleep(0.01) 来减慢脚本速度,所以我在 questDB 中添加了更多数据,但几分钟后又出现了错误。 我还尝试了一些在堆栈溢出中找到的“信号”,但我没有让它对我的整个 18GB 文件起作用。 有人可以帮助我扩展脚本以实现持续工作吗?

python questdb
1个回答
0
投票

您可以使用

CURL

curl -i -XPOST 'http://localhost:9000/write' --data-binary @data.txt

鉴于文件不大,应该可以一次性上传。如果是,最好将其分成多个,但不要破坏 ILP 线。

QuestDB 现在与 InfluxDB 兼容进行写入,它接受 HTTP,因此与 CURL 上传兼容。

© www.soinside.com 2019 - 2024. All rights reserved.