ODBC 全称是 Open DataBase Connectivity,说是个开放标准,不过这个开放标准在 Windows 上微软自己做得好得一匹(其实是微软搞的一个开放标准),所以很多人觉得这货 aka Microsoft ODBC。实际上,脱离 Windows 之后,ODBC 的实现其实是有的,微软在发行 Microsoft SQL Server for Linux 的时候发行的非 Windows ODBC 驱动就是 unixODBC,不过 unixODBC 在 GNU/Linux 上活跃,各大 BSD 活跃,但是跟 BSD 渊源深厚的 macOS 是 iODBC(一看就跟 Apple 有关系)。
使用 iODBC,可以在官网找驱动列表:ODBC Drivers。
好了,我也就一说,别去找。页面上列出来的真的可以用的只有 OpenLink,但要填表索取试用版,其余的要么源码要么停止支持了。众所周知,微软是 macOS 最好的开发者,所以这种东西问问微软,可以知道:与 Excel for Mac 兼容的 ODBC 驱动程序。
其实 iODBC 在 Microsoft Excel 以及 FileMaker 推荐使用的数据库驱动正是 ActualTech 的数据库驱动。
题图:東京成田国際空港第3ターミナル。
在早期,Excel 还提供了 Simba 的 iODBC 驱动选项,但是在新版列表中已经被移除。FileMaker 一直只声明兼容 ActualTech 数据库驱动。
书归正传,ActualTech 提供的 iODBC 驱动支持:
- 商业数据库:Microsoft SQL Server / Sybase SQL Server
- 商业数据库:Oracle
- 社区数据库:MySQL / PostgreSQL / SQLite 3
- 单文件数据:Access / 制表符分隔符文件 / 逗号分隔符文件 / Excel
还提供一个用于兼容 PostgreSQL 的用于 FileMaker 的适配器(独立安装包)。
![f5d329083bd601e7cc1fff2a13d5a1b8.png](https://i-blog.csdnimg.cn/blog_migrate/80863b15b5a42e97828e14af33ba11a4.jpeg)
安装完成后你可以在 ODBC 管理器中找到这些数据库驱动提供器:
![73bf9427cda474f155c3ba1eda865dbd.png](https://i-blog.csdnimg.cn/blog_migrate/5c03cc1180f4533348e9446451dca48e.jpeg)
创建一个 DSN 非常简单,在「系统 DSN」选项卡中点击「添加...」按钮,选择合适的驱动:
![9c8f330b6375fff16db3312ff97d0293.png](https://i-blog.csdnimg.cn/blog_migrate/2949cb526224a676275db09e57fa750f.jpeg)
- Actual Access:用于 Access、Excel、TSV 以及 CSV。
- Actual ESS Adapter:用于包装现有 PostgreSQL DSN 提供给 FileMaker。
- Actual Open Source Databases:用于 MySQL、PostgreSQL 以及 SQLite 3。
- Actual Oracle:Oracle。
- Actual SQL Server:Microsoft SQL Server 以及 Sybase SQL Server。
除此之外的数据库都不支持(或许可以找 OpenLink 的驱动试试看)。
下面的操作以 SQL Server 为例:
![7bd7ea8de49c88f4027f75aa04b89d40.png](https://i-blog.csdnimg.cn/blog_migrate/cf80fbcbd7983a4b34ad6af953e830d4.jpeg)
注意,并不是所有的数据库驱动向导都是一致的。
![3cc8a0dea56e11dcb65043acff73ff77.png](https://i-blog.csdnimg.cn/blog_migrate/9c07773ff9baed37d27086f9225a8492.jpeg)
如果要自动登录,那么需要勾选「将密码存储到钥匙串访问」。
Sybase 与 Microsoft 在 SQL Server 这个数据库产品上有深远的故事。感兴趣可以维基一下。
![57c361fa2354b16471652987157848a5.png](https://i-blog.csdnimg.cn/blog_migrate/678dfa24828c6ffb86cfb10412a50002.jpeg)
注意,ODBC 数据库连接是基于「数据库」的而不是「数据库服务器」的。也就是,每一个 ODBC 连接对应一个数据库,设置时需要指定确切的数据库。
在最后的界面复查数据正确之后,保存 DSN(会要求输入数次密码):
![eb04e646c65d2950a40c63dedf1d8267.png](https://i-blog.csdnimg.cn/blog_migrate/9f0eb6ece4a04cf39c2bb238acb7d842.jpeg)
大功告成,我们配置好了一个 iODBC 连接的 SQL Server 数据库。接下来我们尝试使用 Navicat 通过 iODBC 来备份一个模式到 SQLite 3。
![a51c7507e03d3d14f50bf5b064a22f21.png](https://i-blog.csdnimg.cn/blog_migrate/a65b608f8b6ceb2dcd56dd077778726a.jpeg)
首先在 Navicat 中创建 SQLite 3 数据库连接,然后启动「导入向导」,选择 ODBC:
![fda6e9184f43120d8df3ee3515a54dc4.png](https://i-blog.csdnimg.cn/blog_migrate/943373d81f306116396ca7880aa755ff.jpeg)
虽然 Navicat 本身提供了数据迁移功能,但是数据迁移功能是高级付费功能,需要额外购买。通过 ODBC 可以回避 Navicat 的一部许可证费用。
找到目标 ODBC 连接后,执行映射配置后开始任务:
![860832dc007987eaf106ad49cc1eb052.png](https://i-blog.csdnimg.cn/blog_migrate/fe7b66e292f690f13df0f3c43b09c800.jpeg)
整个过程顺利且迅速:
![3e9e70d4fb6a406661cd385a69082cd1.png](https://i-blog.csdnimg.cn/blog_migrate/9ca147ccaa9c9223d931c845c0cee2b7.jpeg)
SQL Server 数据库位于 Microsoft Azure 日本。
演示数据来源于早期 BetaWorld 的合作项目 BetaWorld Library Online,由 Microsoft Azure 托管。