Есть ли драйвер MacOS ODBC, который читает текстовые файлы команд SQL? - PullRequest
2 голосов
/ 18 июля 2011

Я безуспешно искал драйвер iODBC для MacOS, который может читать сохраненные файлы .SQL, экспортированные в формате Microsoft SQL Server.Существует ли один?

У нас есть большая куча исследовательских данных, хранящихся в одном приложении , которые можно экспортировать в виде электронных таблиц Excel или файлов SQL (например, текстовый файл, полный SQL * 1005).* и INSERT заявления).Нам нужно импортировать эти данные в другое приложение (Stata 9), которое работает под MacOS и может импортировать файлы Excel, его собственный формат или из источника ODBC.Итак, мне нужен драйвер ODBC, который может читать простые файлы SQL в качестве источника. Нам не нужен драйвер, который фактически взаимодействует с базой данных MSSQL , потому что здесь нет реальной базы данных;просто простой файл .SQL с командами в стиле MSSQL.

К сожалению, установка MacOS по умолчанию, похоже, не содержит драйверов ODBC, даже не для чтения плоских файлов или баз данных SQLite.

Текущий рабочий процесс для перемещения этих данных - экспорт их из DatStat в виде электронной таблицы Excel, открытие этой таблицы и ее ручное исправление в соответствии с потребностями Stata, затем сохранение и повторный импорт в Stata - до смешного трудоемкий, а также теряет много важных метаданных, таких как описания переменных и аннотации.

1 Ответ

2 голосов
/ 06 августа 2011

Я думаю, что лучше всего здесь загрузить данные из DatStat в базу данных, а затем загрузить их обратно в Stata.Сначала экспортируйте ваши данные из DatStat в файл .sql.Я не знаком с DatStat, но если вы можете сделать это навалом или через командную строку, было бы лучше.Вы можете получить доступ к терминалу вашей ОС в Stata с помощью команды -shell-.После того, как у вас есть файл .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 не существует драйвера ODBC для Mac.Если это так, вы можете установить одну из систем баз данных с открытым исходным кодом, таких как MySQL или PostgreSQL.Я не пользователь Mac, но драйверы для них должны существовать для Mac.

Удачи!

...