V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
sjmcefc2
V2EX  ›  问与答

困惑。一个 clickhouse 的命令字符串要怎么写才是正确的呢?

  •  
  •   sjmcefc2 · 2021-04-13 06:57:45 +08:00 · 1305 次点击
    这是一个创建于 1355 天前的主题,其中的信息可能已经有所发展或是发生改变。

    clickhouse-client --format_csv_delimiter="^C" --query="INSERT INTO tutorial.TABLE FORMAT CSV" < CSV.txt

    想着把上面的命令写到 python 的 call 中,应该怎么写才能正确调用呢?“”这种字符串总是会断掉正常的解析。用 r 也貌似没有用处。 或者调用这样的命令还有什么比较好的方式呢?

    4 条回复    2021-04-13 08:06:54 +08:00
    NilChan
        1
    NilChan  
       2021-04-13 07:00:56 +08:00 via Android
    看成了 clubhouse
    sjmcefc2
        2
    sjmcefc2  
    OP
       2021-04-13 07:13:54 +08:00
    感觉应该是^C 这个符号,是不是要转义呢
    yzwduck
        3
    yzwduck  
       2021-04-13 07:31:50 +08:00
    对于复杂的命令行,我觉得直接传递参数数组会容易一些,转义交给 Python 来做。
    PS: 我没有 clickhouse 环境,所以没测试过是否正确。

    fobj = open('CSV.txt', 'rb')
    p = subprocess.call(['clickhouse-client', '--format_csv_delimiter=^C', '--query=INSERT INTO tutorial.TABLE FORMAT CSV'], stdin=fobj)
    sjmcefc2
        4
    sjmcefc2  
    OP
       2021-04-13 08:06:54 +08:00
    @yzwduck 这个提示--format_csv_delimiter="" --query= "INSERT INTO tutorial.table FORMAT CSV "< /home/ja/data/data/csv.txt
    Code: 19. DB::Exception: A setting's value string has to be an exactly one character long
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2798 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 09:29 · PVG 17:29 · LAX 01:29 · JFK 04:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.