我有一个Stata插件,允许我从文件中读取SQL,在PostgreSQL服务器上运行它,并将数据传递给Stata。
不幸的是,我的很多SQL都依赖于正确解析的换行符,以便生成正确的(甚至是有效的)SQL。例如,
SELECT *
FROM some_table
-- Require something to be true
WHERE some_boolean;
以St SELECT * FROM some_table -- Require something to be true WHERE some_boolean;
结尾,这显然无法发挥作用。
这是我用来读取数据的.ado
文件。我尝试了很多方法,但无法找到将换行符放入exec
变量的方法。
program define loadsql
*! Load the output of an SQL file into Stata, version 1.4 (iandgow@gmail.com)
version 13.1
syntax using/, CONN(string)
#delimit;
tempname sqlfile exec line;
file open `sqlfile' using `"`using'"', read text;
file read `sqlfile' `line';
while r(eof)==0 {;
local `exec' `"``exec'' ``line''
"';
file read `sqlfile' `line';
};
file close `sqlfile';
* display "`conn'";
pgload "`conn'" "``exec''", clear;
* pgload "``dsn''" "SELECT permno, date, abs(prc) AS prc FROM crsp.dsf LIMIT 10", clear;
end;
答案 0 :(得分:1)
在Windows上使用char(10)
(或者char(13) + char(10)
。)
因此,替换
local `exec' `"``exec'' ``line''
"';
在问题中提供的.ado
文件中
local `exec' = "``exec''" + char(10) + "``line''";