【问题标题】:How to load a csv into a table in Q?如何将csv加载到Q中的表格中?
【发布时间】:2019-02-11 22:38:01
【问题描述】:

对 Q 非常陌生,我在按照文档中的示例将数据加载到表中时遇到了一些问题。

我正在运行以下代码:

table1: get `:pathname.csv

虽然它不会引发错误,但当我运行以下命令时,什么都没有出现:

select * from table1

或者在选择特定列时:

select col1 from table1

如果有人能指引我正确的方向,那就太好了!

编辑:这似乎有效并保留了我所有的专栏:

table1: (9#"S";enlist csv) 0: `:data.CSV

【问题讨论】:

    标签: database kdb


    【解决方案1】:

    你需要使用0:https://code.kx.com/q/ref/filenumbers/#load-csv

    具体用法取决于您的 csv,因为您需要定义数据类型以将每列加载为。

    作为一个例子,这里我有一个带有长、字符和浮点列的 CSV:

    (kdb) chronos@localhost ~/Downloads $ more example.csv 
    abc,def,ghi
    1,a,3.4
    2,b,7.5
    3,c,88
    (kdb) chronos@localhost ~/Downloads $ q
    KDB+ 3.6 2018.10.23 Copyright (C) 1993-2018 Kx Systems
    l64/ 4()core 3894MB chronos localhost 127.0.0.1 EXPIRE 2019.06.15 jonathon.mcmurray@aquaq.co.uk KOD #5000078
    
    q)("JCF";enlist",")0:`:example.csv
    abc def ghi
    -----------
    1   a   3.4
    2   b   7.5
    3   c   88 
    q)meta ("JCF";enlist",")0:`:example.csv
    c  | t f a
    ---| -----
    abc| j    
    def| c    
    ghi| f    
    q)
    

    我使用字符 "JCF" 来分别定义数据类型 long、character 和 float。

    enlist 分隔符 (",") 表示 CSV 的第一行包含列的标题。 (否则,这些可以在您的代码和构造的表中提供)

    附带说明,请注意在 q-sql 中,* 不像在标准 SQL 中那样是必需的;您可以简单地通过select from table1 查询所有列

    【讨论】:

    • 感谢您的回复,我相信它正在加载。为了调用表,我将不得不分配它。当我将“table1”放在语句前面时,它失败了。那么有什么方法可以不同地分配表吗?
    • 使用我上面的例子,它会是table1:("JCF";enlist",")0:`:example.csv 也许你错过了:
    猜你喜欢
    • 2019-09-05
    • 2023-03-30
    • 1970-01-01
    • 2017-01-14
    • 2017-01-05
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多