如何在Stata宏变量中插入换行符?

时间:2015-02-07 16:18:15

标签: stata

我有一个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;

1 个答案:

答案 0 :(得分:1)

在Windows上使用char(10)(或者char(13) + char(10)。)

因此,替换

local `exec' `"``exec'' ``line'' 
 "';

在问题中提供的.ado文件中

local `exec' = "``exec''" + char(10) + "``line''";