【问题标题】:How can I create an external dictionary from url in clickhouse?如何从 clickhouse 中的 url 创建外部字典?
【发布时间】:2020-07-14 05:39:47
【问题描述】:

我正在尝试从http://standards-oui.ieee.org/oui/oui.csv 创建字典 使用此代码:

CREATE DICTIONARY TestDict (
            registry String DEFAULT '',
            assignment String DEFAULT '',
            name String DEFAULT '',
            address String DEFAULT ''
        )
        PRIMARY KEY assignment
        SOURCE(HTTP(
            url 'http://standards-oui.ieee.org/oui/oui.csv'
            format 'CSVWithNames'
        ))
        LAYOUT(FLAT())
        LIFETIME(300)

但是当我尝试select * from default.TestDict 时,它返回错误“表 default.testDict 不存在”。然后字典状态变为“失败”。 我究竟做错了什么?

【问题讨论】:

    标签: clickhouse


    【解决方案1】:

    首先让我们看一下字典last_exception-param:

    SELECT *
    FROM system.dictionaries
    FORMAT Vertical
    /*
    ..
    last_exception: Code: 27, e.displayText() = DB::Exception: Cannot parse input: expected , before: MA-L,002272,American Micro-Fuel Device Corp.,2181 Buchanan Loop Ferndale WA US 98248 \r\nMA-L,00D0EF,IGT,9295 PROTOTYPE DRIVE RENO NV US 89511 \r\nMA-L,086195,Rockw: (at row 1)
    
    Row 1:
    Column 0,   name: assignment, type: UInt64, ERROR: text "MA-L,00227" is not like UInt64
    ..
    */
    

    布局选择错误的问题原因:FLAT-layout 需要 UInt64 类型的数字主键而不是 String。

    需要使用支持String-type的composite key和相关的COMPLEX_KEY_HASHED-layout。

    CREATE DICTIONARY TestDict
    (
        registry String DEFAULT '', 
        assignment String DEFAULT '', 
        name String DEFAULT '', 
        address String DEFAULT ''
    )
    PRIMARY KEY registry, assignment, name
    SOURCE(HTTP(URL 'http://standards-oui.ieee.org/oui/oui.csv' FORMAT CSVWithNames))
    LIFETIME(MIN 0 MAX 300)
    LAYOUT(COMPLEX_KEY_HASHED())
    

    考虑到主键由三列(注册表、分配、名称)组成,以唯一标识每一行。

    SELECT count()
    FROM default.TestDict
    /* result
    ┌─count()─┐
    │   27742 │
    └─────────┘
    */
    

    【讨论】:

      猜你喜欢
      • 2021-09-24
      • 2018-12-27
      • 1970-01-01
      • 2021-03-15
      • 1970-01-01
      • 2013-07-13
      • 2020-09-14
      • 2014-03-03
      • 2019-01-06
      相关资源
      最近更新 更多