用脚本添加 ODBC 数据源

作者: , 共 796 字

Excel、Matlab 在与数据库交互数据时,通常需要事先配置好 ODBC 数据源,这导致一个文件换到另一台机器还需要重新配置 ODBC。手工配置太麻烦,从国外一个网站看到一种解决方案:

运行 regedit ,展开到 HKEY_CURRENT_USER\Software\ODBC\ODBC.INI ,导出所有该目录下所有注册项,保存为.reg 文件,然后换台机器运行该 reg 文件即可。

也可以自己直接编辑注册表脚本。比如下面定义了一个 SQL 的数据源:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI]

[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources]
"%sql_odbc_name%"="SQL Server"

[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\%sql_odbc_name%]
"Driver"="C:\WINDOWS\system32\SQLSRV32.dll"
"Description"="%sql_odbc_name%"
"Server"="%sql_server_address%"

Oracle 数据库的脚本定义稍微复杂点,但思路也差不多。模板见下面文件(需替换所有%%变量)

[download id="13"]

如需在 Matlab 里直接执行注册表脚本,只需在 command line 或者 m 文件里使用 winopen('abc.reg')即可。

Q. E. D.

类似文章:
Matlab 的 database 工具箱只支持 ODBC 数据库连接,在使用之前需要先设置 ODBC 数据源。之前在 Excel 里用的是 ADODB ,使用 ADODB 的好处是无需设置 ODBC 源,似乎效率也要高一些(但我一直没弄懂 ADODB 是什么东西,所以效率这东西我也说不清)。
编程 » Excel
在编辑 Excel 文件时经常遇到的一个问题是,我这边用得好好地,换台机器就变了个样,或者根本用不了。下面是我在日常工作中总结的一些避免这些情况的小技巧。
一个烦心事情是 pypyodbc 查询到的中文结果都显示为问号乱码,下面的代码可以解决这个问题。但会导致无法正常获取查询结果的字段名称(curser.description结果异常)。由于修改了 sys 全局设置,目前不清楚是否还有其它副作用。
Excel 多表合并和查询是一个应用很广泛的问题。下面是一个简单的例子,我们需要从两张数据表里,得出每个行业的股票波动率平均值。第一个数据表保存了股票和行业的对应关系,有两列,第一列为股票名,第二列为每只股票对应的行业。第二张表保存了各个股票在各个交易日的收盘价和前收盘价,有四列,第一列是股票名,第二列为交易日,第三列和第四列分别为股票在这个交易日的前收盘价和收盘价。
编程 » Excel, 数据库
在前面的文章里,我已经提到Excel 数据本身可以当做一张 SQL 查询的数据表,并在 Excel 内进行数据库运算操作。数据库查询函数可以用我之前写的Excel 数据库操作函数类。我们可以用以下方式
2014-03-25 更新:我已经将该类修改成函数形式,并增加新功能,参见更新 Excel 的数据库查询函数库
编程 » Matlab
Matlab 在启动时会自动运行脚本startup.m。在这个脚本里可以自动修改当前目录,修改显示方式等等。比如
更新一下之前写的Excel 的数据库类,将其改成函数的形式,调用更简单(省却了生成类实例的步骤)。现在这个代码在工作中用了一年多,已经比较健壮。若有问题,请留言指出或与我联系。
编程 » bug, Matlab
Matlab 内置的 runstoredprocedure 函数,用来运行同时有输入和输出参数的存储过程:
相似度: 0.088
最近写了一些 Matlab 程序,想起以前想过的一个东西,记录一下。
现在相机的像素实在是太高了,上次去泰山玩,朋友的 1200 万像素的 D90 照出来的照片分辨率高达 4288×2848 ,即使转为 jpg 格式,每张都在 5M 以上。而现在电脑屏幕的分辨率最高也在 1920 以下吧,超高分辨率的照片除了打印大照片之外没什么用处,反而不方便传输、流通、保存。
如果一个日期(或者时间),如果用字符串,比如"2010-10-04"的形式,各个系统都没有什么区别。在某些时候,将日期用数字表示,将大大增加对日期查找、比较的效率。而如果用数字来表示日期,在不同的系统之间差别就大了。