Sas 带程序附加的散装货物

Sas 带程序附加的散装货物,sas,Sas,对SAS来说相对较新,希望将数据(pipe delimited.dlm)批量加载到MySQL数据库中。无论如何,我相信我已经确定了基本原则,但如何告诉SAS数据行的开始和结束却让我感到困惑。当前语法 proc append base=abc.metrics (bulkload=yes bl_delimter='|'

对SAS来说相对较新,希望将数据(pipe delimited.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;

如果您有任何想法、指导和意见,我们将不胜感激。

我不认为您可以直接为MySQL这样做:

但是,您可以自己编写该文件。将sashelp.class更改为数据集文件“\server\yourfile.dlm”,如果需要|在~之前的最后一条记录之后,请删除该+(-1)

然后你可以像平常一样调用MYSQL的批量加载工具(不管是什么);您可以使用直通连接,即

proc sql;
connect to odbc (connection-information);
execute ("load file.dlm into table") by odbc;
quit;
(这里的sql语法显然很糟糕,但这就是概念所在,“”中的任何内容都会作为MySQL代码直接在MySQL框中执行,就像您直接在DB的接口中一样)


或者,如果MySQL有类似于Oracle的SQL*加载器的东西,您可以使用“x”命令从命令行调用它。据我所知,您不能直接从SAS“批量加载”到MySQL,请参阅SAS访问手册中的


因此,最好是创建一个带分隔符的文本文件(可能使用
PROC EXPORT
)并使用mysql实用程序。下面是各种解决方案,特别是关于
加载数据本地填充
命令的解决方案

你把它带到SAS数据集中了吗?@Joe我把它带到数据集中了,你说的“数据行的开始和结束”是什么意思?如果它在SAS数据集中,SAS已经有了行格式。@乔,对不起,再清楚一点。我已经将数据写入SAS数据集以及一个dlm文件,每行的开头和结尾都有唯一的字符:“!”=开始和“~”=结束。管道字符“|”分隔每个数据字段。基本上,我在寻找语法——如果它存在的话——它可以告诉SAS字段/行终止点,就像在SQL批量加载中一样。你能在那里显示你的LIBNAME语句吗[当然可以屏蔽ip/密码]?这是ODBC的例子吗?另外,你有什么版本的SAS?如果我收集了你说的话,我可以从实际的SAS数据集而不是dlm文件(?)中提取。进一步研究,这似乎对MYSQL不起作用。它适用于SQL Server,但即使是Oracle也不像我想象的那样工作。libname abc odbc datasrc=abc user=?密码=?;我不认为SAS真的支持批量加载到ODBC->MySQL。查看文档,它只列出了通过ODBC支持大容量加载的Microsoft SQL Server。您可能需要手动输出文件,以便批量加载(然后通过passthrough SQL加载)。您的MySQL数据库是本地的,和/或在您可以直接向其写入文件的服务器上(映射文件夹等)?MySQL在服务器上,但看起来我可能不得不在SQL负载上走传统的路线,但这意味着我将尝试“proc SQL;”代码。谢谢你在这个问题上的帮助!
proc sql;
connect to odbc (connection-information);
execute ("load file.dlm into table") by odbc;
quit;