Bulkload w / Proc附加

时间:2013-02-14 16:09:04

标签: sas

相对较新的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;

任何想法,指导和评论都将不胜感激。

2 个答案:

答案 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命令的解决方案。