我正在SAS中生成一个表并将其导出到Microsoft Access数据库(mdb)。现在,我通过连接到数据库作为库来实现这一点:
libname plus "C:\...\plus.mdb";
data plus.groupings;
set groupings;
run;
但是,SAS不会将变量格式导出到数据库中,因此我最终会在表格中使用我想要人类可读的数值。我试过proc sql具有相同的效果。如何将格式化数据导入Access?
这似乎是如此根本,以至于我觉得我必须遗漏一些明显的东西。谢谢你的帮助。
到目前为止我尝试过的事情:
普通libname到mdb,数据步骤(如上)
普通libname为mdb,proc sql创建表
OLE DB libname(如Rob的参考),数据步骤
OLE DB libname,proc sql create table
答案 0 :(得分:1)
这里有一堆替代连接类型,也许其中一种可以使用?:
答案 1 :(得分:1)
现在正在发挥作用:
因为SAS 保留了csv中的格式化值,所以我将表导出到csv文件,该文件为Access数据库中的链接表提供信息。这似乎不太理想,但它的确有效。 SAS显然具有导出格式化值的能力,这是奇怪的,但doesn't seem to document it。
proc export
data= groupings
outfile= "C:\...\groupings.csv"
dbms= CSV
replace;
putnames= yes;
run;
这种方法的一个看似缺点是,如果我添加一个新字段,我必须手动重新创建表。如果我可以放弃/创建proc sql
,那就不是问题了。
答案 2 :(得分:0)
来自SAS支持:如果使用put()创建SQL视图来定义变量,则可以将视图导出到数据库并维护格式化的值。例如:
libname plus "C:\...\plus.mdb";
proc sql;
create view groupings_view as (
SELECT put(gender, gender.) AS gender,
put(race, race.) AS race,
... etc.
FROM groupings
);
create table plus.groupings as (
SELECT *
FROM groupings_view
);
quit;
我无法直接在Access中创建视图 - 我不完全清楚Jet以SAS理解的方式支持视图,因此可能就是问题所在。无论如何,上述功能可以解决我需要输出的有限数量的变量。我可以想象使用一个处理proc内容输出的时髦宏来自动编写这样的查询,但我非常感激我不必这样做......