ODBC
ODBC主要是在Windows下了,Linux和MacOS理论上也能用ODBC,但比较复杂难用,我也没有试过。
以EZDML for win64为例,选择ODBC后,数据源可以有几种格式:
- 用户DSN名称
- 系统DSN名称
- 文件DSN名
- ODBC驱动连接描述符
下面我们举例说明。
DSN配置
以DSN为例,可直接点击数据源输入框右边的“配置”按钮,弹出DSN选择:
这里列出了所有已经配置好的DSN。如果我们需要添加/修改DSN,可点击左下角的“配置”,弹出系统ODBC数据源设置界面:
点添加:
这里我们选择一个演示mdb文件,即老版Access自带的罗斯文商贸示例:
确定保存DSN:
选择新添加的DSN:
连接成功,列表所有表:
执行导入,会提示有些命令不支持,因为有些ODBC驱动并没有完全实例所有接口,图示是不支持获取主键:
反正,最终导入了,不过主外键丢失了,这估计是因为我本机没装Access,没有合适的MDB驱动:
演示不太成功,勉强及格吧。Win32没什么区别,不细述了。
连接描述符
接下来我们用ODBC连接描述符再试一次,在连接窗口上,数据源输入以下内容:
1 | Driver=Microsoft Access Driver (*.mdb, *.accdb);Dbq=D:\temp\Northwind.mdb; |
然后其它就跟DSN一样了:
中文乱码和事务问题
ODBC有时会遇到中文乱码,或者导入数据类型为问号的情况,这时需要作以下处理:
- 检查数据库编码字符集
- 在ODBC数据源配置界面设置正确的字符集(并非所有数据库驱动都提供了这个配置)
- 在EZDML的选项中配置ODBC连接的字符集
总之就是保证数据库、驱动和EZDML三者的字符集统一,过程中可能要来回多试几遍。
ODBC连接在指定非unicode字符集编码后,其大文本数据类型(NCLOB、NTEXT)将默认采用单字节编码类型(Memo);如解码有问题,可在字符集后加[WMemo]强制使用双字节(unicode)编码。
上述ODBC字符集设置并未列出所有字符集,可以手输CP(如CP1253,注意不支持别名,GBK和UTF8是特例),主要是指定CODEPAGE。
另外,有些驱动对事务的支持不好,打开数据时会报事务或读取顺序的错误,这时可在设置中关闭事务(COMMIT后启动新事务)。
ODBC就先介绍这么多。Linux和MacOS的ODBC几乎没什么用,就不试了。
JDBC
参见《EZDML连接数据库——JDBC》
HTTP
ORACLE
SQL Server
MySQL
PostgreSQL
参见《EZDML连接数据库——PostgreSQL和人大金仓》