相对较新的SAS并希望将数据批量加载 - 管道分隔.dlm - 进入MySQL数据库。我已经掌握了基础知识,无论如何我相信,但我很难理解如何告诉SAS数据行的开头和结尾。目前的语法......
proc append base=abc.metrics (bulkload=yes
bl_delimter='|'
bl_options='errors=0'
bl_delete_datafile=no)
data=abc_metrics_&jid;
run;
任何想法,指导和评论都将不胜感激。
答案 0 :(得分:1)
我认为你不能直接为MySQL做这件事: http://support.sas.com/documentation/cdl/en/acreldb/63647/HTML/default/viewer.htm#a002938849.htm http://support.sas.com/documentation/cdl/en/acreldb/63647/HTML/default/viewer.htm#a001752476.htm
但是,您可以自己写出文件。将sashelp.class更改为您的数据集,文件“\ server \ yourfile.dlm”,如果您需要|在〜之前的最后一条记录之后,删除该+( - 1)。
data _null_;
set sashelp.class;
file "c:\temp\test.dat" dlm='|' lrecl=32767;
put "!" @;
put name $ age height weight @;
put +(-1) "~";
run;
然后您可以像往常一样调用MYSQL的批量加载工具(无论是什么);您可以使用直通连接,即
proc sql;
connect to odbc (connection-information);
execute ("load file.dlm into table") by odbc;
quit;
(显然那里的SQL语法很糟糕,但这就是概念 - 那个“”中的任何内容都直接在MySQL框上作为MySQL代码执行,就好像你直接在DB的界面中一样)。
或者,如果MySQL有类似Oracle的SQL * Loader,你可以使用'x'命令从命令行调用它,假设你有权访问它。
答案 1 :(得分:1)
据我所知,您不能直接从SAS“批量加载”到MySQL,请参阅SAS Access手册中的this note。
所以,最好的办法是创建一个分隔的文本文件(可能带有PROC EXPORT
)并使用mysql实用程序。这是a previous SO question有各种解决方案,特别是关于load data local infile
命令的解决方案。