2

我一直在寻找可以读取以 Microsoft SQL Server 格式导出的已保存 .SQL 文件的 MacOS iODBC 驱动程序,但没有成功。一个存在吗?

我们在一个应用程序中存储了大量研究数据,可以导出为 Excel 电子表格或 SQL 文件(例如,一个充满 SQLCREATE TABLEINSERT语句的文本文件)。我们需要将此数据导入另一个在 MacOS 下运行的应用程序 (Stata 9),该应用程序可以导入 Excel 文件、其自己的格式或从 ODBC 源。所以,我需要一个可以读取普通 SQL 文件作为其源的 ODBC 驱动程序。我们不需要真正与 MSSQL 数据库对话的驱动程序,因为这里没有实际的数据库;只是一个简单的 .SQL 文件,其中包含 MSSQL 样式的命令。

不幸的是,默认的 MacOS 安装似乎没有任何 ODBC 驱动程序,甚至没有用于读取平面文件或 SQLite 数据库的驱动程序。

当前移动这些数据的工作流程——将其从DatStat导出为 Excel 电子表格,打开该电子表格并手动修复以符合 Stata 的需要,然后保存并重新导入Stata——非常耗费人力,而且还丢失了很多重要信息元数据,如变量描述和注释。

4

1 回答 1

2

我认为最好的办法是将数据从 DatStat 加载到数据库,然后将其加载回 Stata。首先,将数据从 DatStat 导出到 .sql 文件。我不熟悉 DatStat,但如果您可以批量或通过命令行执行此操作,那将是最好的。您可以使用 -shell- 命令在 Stata 中访问操作系统的终端。有了 .sql 文件后,比如 foo.sql,您可以使用以下 Stata 代码将其发送到数据库,然后导入 Stata。

odbc sqlfile("foo.sql"), dsn("DataSourceName")
odbc load, exec("SELECT * FROM CustomerTable") dsn("DataSourceName")

如果您认为不会再次使用该数据库并且不希望它占用空间,您甚至可以发出最终命令来清理数据库中的表。使用类似的东西:

odbc exec("DROP TABLE CustomerTable")

是的,如果您的数据集很大,这可能会很慢,但是一旦您的数据在数据库中,这可能会很好,因为您可以一次查询部分数据,而不是导入整个数据。

最后,您提到不存在用于 MS SQL Server 的 Mac 的 ODBC 驱动程序。如果是这种情况,您可能需要安装其中一种开源数据库系统,例如 MySQL 或 PostgreSQL。我不是 Mac 用户,但这些驱动程序必须存在于 mac。

祝你好运!

于 2011-08-05T20:23:11.063 回答