sqlfileはデータをロードしません。Stataにデータをロードせずに、実行するだけです(そして、loudオプションが指定されている場合は結果を表示します)。これはやや直感に反しますが、真実です。その理由は、odbcコマンドのpdf /deadtreeマニュアルエントリでやや不透明に説明されています。
ここにもっと役立つ答えがあります。sqlcode.sqlという名前のSQLファイルがあるとします。Stataで開くことができます(長すぎない限り、長すぎるのはStataのフレーバーによって異なります)。基本的に、-file read-はSQLコードを1行ずつ読み取り、結果をexecという名前のローカルマクロに格納します。次に、そのマクロを引数として-odbcload-コマンドに渡します。
いくつかの二重引用符の問題に対処するためにコードを更新しました
次のコードを切り取ってloadsql.adoというファイルに貼り付けます。このファイルは、Stataが表示できるディレクトリ(〜/ ado / personalなど)に配置する必要があります。このようなディレクトリは、-adopath-コマンドで見つけることができます。
program define loadsql
*! Load the output of an SQL file into Stata, version 1.3 (dvmaster@gmail.com)
version 14.1
syntax using/, DSN(string) [User(string) Password(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'"') user(`"`user'"') password(`"`password'"') `clear' `noquote' `lowercase' `sqlshow' `allstring' `datestring';
end;
/* 全部終わった!* /
Stataの構文は次のとおりです。
loadsql using "./sqlfile.sql", dsn("mysqlodbcdata")
また、clearなどの他のすべてのodbcロードオプションを追加することもできます。明らかに、セットアップを反映するためにファイルパスとodbcパラメーターを変更する必要があります。このコードは、-odbc sqlfile( "sqlfile.sql")、dsn( "mysqlodbcdata")-と同じことを実行し、さらに実際にデータをロードする必要があります。
また、次のようにDBクレデンシャルを指定する機能を追加しました。
loadsql using "./sqlfile.sql", dsn("mysqlodbcdata") user("user_name") password("not12345")