我有一个 SyBase 数据库,并负责将其导出到 MS Access。做这个的最好方式是什么?
(注意:这是半个“我想明白后我会自己回答”的问题和半个“如果有人知道...”的问题,所以不要去做研究,除非那是你的乐趣)
认为它不是从 SyBase 导出,而是导入 Access (Jet)。假设您有一个 Access/Jet 可以使用的 SyBase ODBC 驱动程序,这非常简单:
在控制面板 | 管理工具 | 数据源,设置一个指向 SyBase 数据库的 DSN。
在 Access 中,创建一个新的空白 MDB。
从文件菜单中,选择获取外部数据。
选择导入。
在对话框底部的 FILES OF TYPE 下拉列表中,选择 ODBC Databases。
选择 DSN。
应该会弹出 SyBase 数据库中的表列表。选择要导入的,然后单击确定。
如果一切按预期进行,则应导入表。它将包括表结构和所有数据。它不包括触发器(Jet 不支持)、参照完整性规则、存储过程等。我不知道您是否可以导入视图——Access/Jet 可能会将视图视为表而不是 SQL,因为这肯定是它通过 ODBC 处理它们的方式(您可以链接到视图,就像链接到一张桌子)。您可以将 SyBase 视图的 SQL 直接剪切并粘贴到 Access 保存查询中,但 Access/Jet 有自己的 SQL 方言。
如果将新数据库设置为使用 Access UI 所称的“SQL Server 兼容语法 (ANSI 92)”,则可能会更轻松一些。鉴于 SQL Server 是旧版本 SyBase 的一个分支,这可能会使 SQL 更加兼容。要设置它,在 Access 中,转到工具 | 选项 | 高级并查看右下角,其中的选择应该是不言自明的。这不会为您提供完全兼容的 SQL,但它使用 %/_ 通配符并允许 () 用于派生表(而不是可怕的 []。作为 Jet SQL 的别名语法)。它也可能对某些连接语法有影响,但我不确定。
如果您有问题,请回帖,我们会尽力提供帮助。我没有 SyBase 进行测试,只是使用我的本地 MySQL 安装通过 ODBC 导入,所以可能对你来说事情不会完全一样。