0

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;

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

4

2 回答 2

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”命令从命令行调用它,假设您可以访问它。

于 2013-02-14T16:24:51.570 回答
1

据我所知,您不能直接从 SAS“批量加载”到 MySQL,请参阅SAS Access 手册中的此说明

因此,最好的办法是创建一个分隔文本文件(可能使用PROC EXPORT)并使用 mysql 实用程序。这是以前的 SO question,其中包含各种解决方案,尤其是关于load data local infile命令的问题。

于 2013-02-14T17:05:27.123 回答