使用unixODBC,您可以使用名为"isql"的简单命令行实用程序来测试某些查询的连接和权限.无需编写额外的代码或安装libs或膨胀的程序,有没有一种简单的方法来打开X数据源发送一些sql命令并完成它?
在命令行上执行此操作将更可取.
当我尝试使用pyodbc(在mac上)连接到sql server数据库时:
import pyodbc
server = '####'
database = '####'
username = '####@####'
password = '#####'
driver='{ODBC Driver 13 for SQL Server}'
pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+password)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
错误:('01000',"[01000] [unixODBC] [驱动程序管理器]无法打开lib'用于SQL Server的ODBC驱动程序13':找不到文件(0)(SQLDriverConnect)")
当我在实际的驱动程序位置路径时:
driver='/usr/local/lib/libmsodbcsql.13.dylib'
Run Code Online (Sandbox Code Playgroud)
它开始工作了!
我odbcinst.ini看起来像这样:
[ODBC Driver 13 for SQL Server]
Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/usr/local/lib/libmsodbcsql.13.dylib
UsageCount=1
Run Code Online (Sandbox Code Playgroud)
如何让我参考driver='{ODBC Driver 13 for SQL Server}'再次开始工作?
我最初使用本指南来安装驱动程序.如果有帮助的话,我在Mac Sierra上使用anaconda?
我正在使用MS Excel通过ODBC从MySQL数据库中获取数据.
我使用SQL查询成功获取数据.但现在我想要查询参数.
所以我想知道是否可以使用单元格值(电子表格单元格)作为此类查询的参数.
例如,对于此查询:
select name from user where id=1
Run Code Online (Sandbox Code Playgroud)
我想从电子表格中的单元格D4中获取id值.
这是参数化查询的正确方法吗?我该怎么办?
谢谢.
我有一个即将到来的项目,我需要将我们的网站(PHP5/Apache 1.3/OpenBSD 4.1)连接到运行在带有OS400 V5R3的iSeries上的后端系统,以便我可以访问存储在那里的一些表.我已经做了一些检查,但遇到了一些障碍.
从我所看到的,IBM的DB2扩展和DB2软件只能在Linux下运行.我已经尝试用IBM的所有软件编译扩展,甚至尝试了他们的预编译ibm_db2扩展而没有运气.IBM只支持Linux,所以我在内核中打开了Linux仿真,但似乎没有任何帮助.
如果有人碰巧在OpenBSD下本地运行一切都会很棒,但我认为我可能要做的就是在安装了DB2的情况下建立第二台运行CentOS的服务器(最有可能通过ZendCore for IBM,因为它似乎可以完成所有操作)这对我来说)和驱动程序,以便我可以设置一个小的事务服务器,我可以发布,并获得我需要的DB2数据的JSON表示.
第二种选择是否有点矫枉过正,还是其他人有更好的想法?
我正在尝试从单个表中选择一个列(没有连接),我需要计算行数,理想情况是在开始检索行之前.我已经提出了两种方法来提供我需要的信息.
方法1:
SELECT COUNT( my_table.my_col ) AS row_count
FROM my_table
WHERE my_table.foo = 'bar'
Run Code Online (Sandbox Code Playgroud)
然后
SELECT my_table.my_col
FROM my_table
WHERE my_table.foo = 'bar'
Run Code Online (Sandbox Code Playgroud)
或方法2
SELECT my_table.my_col, ( SELECT COUNT ( my_table.my_col )
FROM my_table
WHERE my_table.foo = 'bar' ) AS row_count
FROM my_table
WHERE my_table.foo = 'bar'
Run Code Online (Sandbox Code Playgroud)
我这样做是因为我的SQL驱动程序(SQL Native Client 9.0)不允许我在SELECT语句中使用SQLRowCount,但我需要知道结果中的行数,以便在为其分配数据之前分配数组.遗憾的是,在我的程序的这个方面,使用动态分配的容器不是一个选项.
我担心可能会出现以下情况:
方法2是否禁止此问题?
此外,两种方法中的一种会更快吗?如果是这样,哪个?
最后,是否有一个更好的方法我应该考虑(也许是一种方法来指示驱动程序使用SQLRowCount返回SELECT结果中的行数?)
对于那些问的人,我使用的是Native C++和上面提到的SQL驱动程序(由Microsoft提供).
我有最新的64位版PostgreSQL.我正在运行Win 7 64位.我在安装PG时安装了ODBC驱动程序(通过初始安装程序),并从http://www.postgresql.org/ftp/odbc/versions/msi/将其升级到最新版本.
但是,当我转到ODBC控制面板并尝试添加用户DSN时,PostgreSQL未列为服务器.
我按照这里给出的指示,但我注意到链接已过时.
在Windows上的ODBC(64位)下选择数据源时,我得到两个可用的MySQL数据库选项:
这两者有什么区别?
将.net连接到sybase服务器时出现此错误消息:
[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序
这在以前工作得很好.具有相同细节的系统DSN通过vs.net工作和数据连接也可以工作.
我正在使用vs.net 2005.
有什么建议?
我试图从R中获取MySQL数据库中的UTF-8文本.我在OS X上运行R(通过GUI和命令行尝试),默认语言环境是en_US.UTF-8,没有无论我尝试什么,查询结果显示"?" 对于所有非ASCII字符.
我尝试过设置options(encoding='UTF-8'),DBMSencoding='UTF-8'当通过ODBC连接时,Encoding(res$str) <- 'UTF-8'在获取结果后设置,以及每个的'utf8'变体,都无济于事.从命令行运行查询mysql客户端正确显示结果.
我完全难过了.任何想法为什么它不工作,或我应该尝试的其他事情?
这是一个相当小的测试用例:
$ mysql -u root
mysql> CREATE DATABASE test;
mysql> USE test;
mysql> CREATE TABLE test (str VARCHAR(10)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO test (str) VALUES ('?????');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test;
+-----------------+
| str |
+-----------------+
| ????? |
+-----------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
使用RODBC和RMySQL查询R中的表显示"?????" 对于str列:
> con <- …Run Code Online (Sandbox Code Playgroud) odbc ×10
database ×2
driver ×2
mysql ×2
.net ×1
anaconda ×1
datasource ×1
db2 ×1
difference ×1
excel ×1
ibm-midrange ×1
iodbc ×1
php ×1
postgresql ×1
pyodbc ×1
python-3.x ×1
r ×1
sql ×1
sql-server ×1
sqlncli ×1
unix ×1
unixodbc ×1
utf-8 ×1