小弟现在数据都放在数据库上,想在KDB+里通过ODBC从数据库加载数据,我基本上是照着下面这个链接来做的: https://code.kx.com/trac/wiki/Cookbook/ODBC/qclient 但是到这一步: q)h:.odbc.open `northwind / open northwind database 我这里会出现如下的提示: k){$[#*f:fkeys[x]'t;f;fkey[k[i;0];u i:&1=#:'k:.q.keys'u]'u]xfkey'(u:.Q.id't).[;( );:;]'skey[x]'t:tables x:open x;close x;} '28000 [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user ''. @ k){if[~r[open1;$[0<@x;x;1=#p:`\:x;x;`dsn~a:*|p;";"/:1_0:$[@!f:`$":",$x;f;`/:d, x];o[a],-4_$x];{e::x;0}];'e];*|h,:r} 从字面上来看是说没有用来登陆的login. 但是我又不知道如何设置login的username和password. 想向各位请教一下~ 另外,我的机器是windows 2008 R2 (64位),用的是kdb+的试用版,一开始设置了64位的odbc, 虽然会出错,但是记得弹出了一个用来输入用户名密码的窗口。但是我设好了32位的odbc后,怎么也不出来那个窗口了。。。
又碰到了个新问题,跟在这里问吧: 我现在在SQL Server里有个这样的表: Instruments: InstrumentID int Symbol nvarchar(MAX) InstrumentType nvarchar(MAX) CurrencyCode nvarchar(MAX) ExchangeID int 当中的一条数据是这样的 (1, “1”, “STK", "HKD", 1) 我现在通过odbc在kdb+里面拿数据,我的query是这样的: odbc.eval[db;"select * from Instruments"][0] 但我拿到的结果却是: InstrumentID | 1 Symbol | "" InstrumentType| "" CurrencyCode | "" ExchangeID | 1 也就是三个字符串的数据拿到的都是空。。这是为什么? 另外如果我在select指定了列,那结果是这样的: q).odbc.eval[db;"select InstrumentID, CurrencyCode from Instruments"][0] InstrumentID| 1 CurrencyCode| "HK\000" 字符串的最后一位显示为\000(其它字符串的column也有类似的现象), 很奇怪。。有没有人知道这是怎么回事?我的OS是windows server 2008R2, sql server db的collation是SQL_Latin1_General_CP1_CI_AS...