2015-07-30 3 views
0

Я пытаюсь загрузить данные из студии управления SQL Server в Stata. Как заставить Stata запускать файл .sql? Я использовал -ado-процедуру из другого сообщения, но это не работает, потому что у моей базы данных есть имя пользователя и пароль.Запуск SQL в Stata

Оригинал -ado- код:

program define loadsql 
*! Load the output of an SQL file into Stata, version 1.2 ([email protected]) 
version 12.1 
syntax using/, DSN(string) [CLEAR NOQuote LOWercase SQLshow ALLSTRing DATESTRing] 

#delimit; 
tempname mysqlfile exec line; 

file open `mysqlfile' using `"`using'"', read text; 
file read `mysqlfile' `line'; 

while r(eof)==0 {; 
    local `exec' `"``exec'' ``line''"'; 
    file read `mysqlfile' `line'; 
}; 

file close `mysqlfile'; 


odbc load, exec(`"``exec''"') dsn(`"`dsn'"') `clear' `noquote' `lowercase' `sqlshow' `allstring' `datestring'; 

end; 
+0

Возможно, вы можете сохранить свой пароль как часть настроек ODBC для этого DSN. –

+0

Спасибо за ваше оригинальное сообщение! К сожалению, Stata требует, чтобы я снова вводил имя пользователя и пароль, хотя я его сохранил в настройках ODBC для этого DSN, –

+0

Это очень странно. В любом случае я отредактировал исходный код, чтобы предоставить вам этот вариант. –

ответ

1

help odbc обсуждает connect_options для подключения к источникам данных ODBC. Два из них - u(userId) и p(password), которые могут быть добавлены к оригинальному коду, написанному @Dimitriy V. Masterov (см. Сообщение here).

Я считаю, что вы должны иметь возможность подключиться с помощью проверки подлинности SQL Server, добавив u(string) и p(string) в качестве дополнительных опций следующие syntax в файле лукаво, а затем снова вниз следуя

odbc load, exec(`"``exec''"') dsn(`"`dsn'"') 

Это также требует, чтобы вы передаете эти аргументы программе, если вы ее назовете:

loadsql using "./sqlfile.sql", dsn("mysqlodbcdata") u(userId) p(Password) 
+0

Да, я думал, что это сработает, но когда я назову его loadql, используя «./sqlfile.sql», dsn («mysqlodbcdata») u (userId) p (Пароль) stata возвращает 'вариант u() не разрешен' Я думаю, что ошибка может быть в этой строке: odbc load, exec ('' '' exec '' '') dsn ('' 'dsn '' ') u (' '' u' '') p ('' ' p '' ') 'clear'' noquote ''lowercase'' sqlshow ''allstring'' datestring '; потому что пользователь и пароль не входят в кавычки, когда я вызываю его –

+0

, вы добавили 'User (string)' и 'Password (string)' в раздел в скобках после синтаксиса? – ander2ed

+0

@ ander2ed правильный. Я отредактировал код, связанный в этом ответе, чтобы добавить этот параметр. –