在LOCAL驱动器上打印日志到表或文本文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在LOCAL驱动器上打印日志到表或文本文件相关的知识,希望对你有一定的参考价值。

我想把我的SAS EG日志的内容放到R.

我的第一个想法是使用PROC PRINTTO打印到我将导入的文本文件,但我只能使用它将日志打印到安装了SAS的服务器,我无法从R访问(我不能没有管理员权限。

我想出了一种从R运行egp项目并从R读取SAS表的方法,所以如果我可以将其内容重定向到表,或者我将存储到的宏变量,我将能够获取日志。一张桌子。

我怎样才能做到这一点 ?

答案

您可以将代码注册并运行为SAS存储过程,并使用R通过http调用它。附加&_debug=log将为您提供日志。只有一个选项..并避免proc打印。

另一答案

我想出了办法:

  • 使用PROC PRINTTO将项目的日志重定向到服务器上的文件,我可以从SAS(而不是R)写入。
  • 将此文件作为分隔文件读入表中,使用异常分隔符,我将不得不尝试不在我的代码中使用(不幸的是,分隔符似乎不是一个选项)
  • 从R导入此表并修剪不相关的第一行

我的SAS代码:

%let writeable_folder_on_server = /some_path/;
%let temp_log_for_R = &writeable_folder_on_server/temp_log_for_R.txt;
%let log_as_tbl = mylib.mytbl;

proc printto log="&temp_log_for_R" print="&temp_log_for_R" new;
run;

proc datasets library= mylib nolist;
delete mytbl;
run;

/* code producing log */
%put foo;
%put bar;

proc import datafile="&temp_log_for_R" out=&log_as_tbl dbms=dlm replace;
 delimiter='§';
 getnames=no;
 GUESSINGROWS=MAX;
run;

IMPORT过程的替换参数“应该”使表删除多余,但由于某种原因(可能是因为我使用了oracle库)它没有。

它产生以下输出,存储在表中:

NOTE: PROCEDURE PRINTTO used (Total process time):
real time           0.01 seconds
user cpu time       0.01 seconds
system cpu time     0.01 seconds
memory              904.75k
OS Memory           15140.00k
Timestamp           01/30/2019 01:29:21 PM
Page Faults                       2
Page Reclaims                     251
Page Swaps                        0
Voluntary Context Switches        1
Involuntary Context Switches      0
Block Input Operations            0
Block Output Operations           0


28
29         proc datasets library= mylib nolist;
30         delete mytbl;
31         run;

NOTE: Deleting mylib.mytbl (memtype=DATA)
32
33         /* code producing log */
34         %put foo;
foo
35         %put bar;
bar
36

NOTE: PROCEDURE DATASETS used (Total process time)
real time           0.17 seconds
user cpu time       0.02 seconds
system cpu time     0.00 seconds
memory              2425.56k
OS Memory           17956.00k
Timestamp           01/30/2019 01:29:21 PM
2

Page Faults                       5
Page Reclaims                     858
Page Swaps                        0
Voluntary Context Switches        57
Involuntary Context Switches      4
Block Input Operations            0
Block Output Operations           0

以上是关于在LOCAL驱动器上打印日志到表或文本文件的主要内容,如果未能解决你的问题,请参考以下文章

argparse 代码片段只打印部分日志

Kettle 4.4.0 通过 Java 代码 输出日志到表

hive从查询中获取数据插入到表或动态分区

在 SQL 中的表或视图上添加索引

android studio 中jni底层日志的打印

通过 python 将 csv 文件插入 MySQL。运行但数据未填充到表中