我正在尝试查看是否可以将 KDB 用于我目前的一些工作。我在遗留 SQL 中有相当多的代码,重用的前景似乎令人兴奋。
这是我遇到的时候: http: //code.kx.com/q/interfaces/q-client-for-odbc/
此链接仅涉及 SQL 选择 - 也可以将其用于插入和删除吗?性能呢?
我正在尝试查看是否可以将 KDB 用于我目前的一些工作。我在遗留 SQL 中有相当多的代码,重用的前景似乎令人兴奋。
这是我遇到的时候: http: //code.kx.com/q/interfaces/q-client-for-odbc/
此链接仅涉及 SQL 选择 - 也可以将其用于插入和删除吗?性能呢?
根据您的问题,我不确定这会达到您的期望。您似乎想在非 SQL数据库上重用 SQL代码。
此驱动程序不对当前数据库运行 SQL,它允许您连接到外部数据库,并使用该其他数据库的 SQL 功能拉回数据。(ODBC 是一个标准化的驱动系统,用于连接各种数据库、发送查询和返回数据)。
这仅在您打算让两个不同的数据库并排运行并需要它们在数据库级别进行交互时才有用(而不是像上面@millimoose 提到的那样,从您的应用程序单独连接到它们)。
它很少使用,但有一种方法可以将 ANSI SQL 与 KDB 一起使用。只需在查询前加上 s)
q)t:([]col1:1 1 2 2;col2:10 10 20 20; col3:5.0 2.0 2.3 2.4; grp:
一个a
_c)
q)t
col1 col2 col3 grp`
------------------
1 10 5 a
1 10 2 a
2 20 2.3 b
2 20 2.4 c
q) /standard select
q)select from t
col1 col2 col3 grp
------------------`
1 10 5 a
1 10 2 a
2 20 2.3 b
2 20 2.4 c
q)/SQL type select with select *
q)select * from t
'rank
q) /Prefix the query with s)
q)s)select * from t
col1 col2 col3 grp
------------------
1 10 5 a
1 10 2 a
2 20 2.3 b
2 20 2.4 c
现在 - 这个特性很少使用,解析器没有针对这种类型的使用进行优化,资源稀缺。与仅将代码转换为 Q 相比,您可能会花费更多时间来调试问题。希望这会有所帮助。
另一种选择是使用 qodbc 服务器 -- http://code.kx.com/q/interfaces/q-server-for-odbc/