我有很多SAS格式的文件,我希望能够在SAS之外的程序中读取它们。我除了安装基本SAS系统外没有其他任何东西。我可以手动转换每一个,但我想要一种方法自动执行。如何读取SAS数据集?
回答
您需要有一个正在运行的SAS会话充当数据服务器。然后您可以使用ODBC访问SAS数据,请参阅SAS ODBC drivers guide。
为了获得本地SAS ODBC服务器上运行,你需要:
- 在SAS ODBC驱动程序指南描述定义你的SAS ODBC服务器设置。在下面的例子中,我将连接到一个名为“loclodbc”的服务器。
在你的服务文件中添加一个条目,(C:\ WINDOWS \ SYSTEM32 \ DRIVERS \ etc \ services中),就像这样:
- loclodbc 9191/TCP
...集端口号(这里是:9191),以便它适合您的本地设置。服务“loclodbc”的名称必须与ODBC设置中定义的服务器名称匹配。请注意,术语“服务器”与您的PC的物理主机名无关。
您的SAS ODBC服务器现在可以运行,但没有可用的分配数据资源。通常情况下,您可以在SAS ODBC设置过程中的“库”选项卡中设置此选项,但由于您要“即时”指向数据源,因此我们忽略了这一点。
在您的客户端应用程序中,您现在可以连接到SAS ODBC服务器,指向要访问的数据资源并获取数据。
SAS指向数据资源的方式是通过“LIBNAME”的概念。 libname是一个数据集合的逻辑指针。
因此
LIBNAME sasadhoc 'C:\sasdatafolder';
分配的文件夹 “C:\ sasdatafolder” 的逻辑句柄 “sasiodat”。
如果从内部SAS希望获得居住在SAS数据表文件中的数据“C:\ sasdatafolder \ test.sas7bdat”,你会做这样的事情:
LIBNAME sasadhoc 'C:\sasdatafolder';
PROC SQL;
CREATE TABLE WORK.test as
SELECT *
FROM sasadhoc.test
;
QUIT;
因此,我们需要要做的是告诉我们的SAS ODBC服务器从我们的客户端应用程序分配一个libname到C:\ sasdatafolder。我们可以通过使用DBCONINIT参数在启动时发送此资源分配请求来完成此操作。
我已经做了一些示例代码。我的示例代码也是用BASE SAS语言编写的。由于显然有更聪明的方法来访问SAS数据,比SAS通过ODBC连接到SAS,此代码仅作为示例。
您应该能够采取有效位,创造您所使用的编程环境,自己的解决方案......
SAS ODBC连接的示例代码:
PROC SQL;
CONNECT TO ODBC(DSN=loclodbc DBCONINIT="libname sasadhoc 'c:\sasdatafolder'");
CREATE TABLE temp_sas AS
SELECT * FROM CONNECTION TO ODBC(SELECT * FROM sasadhoc.test);
QUIT;
神奇的发生在代码的“CONNECT TO ODBC ...”部分,将libname分配给所需数据所在的文件夹。
实际上,你不需要运行SAS会话; ODBC驱动程序会自动为您启动一个。但是,以编程方式创建ODBC配置并不容易,所以必须手动配置。这是一个问题,因为您不能只加载任意数据集。 – 2010-03-11 20:15:01
任意,你可能的意思是“位于任何地方,任何名称”...?或者它是作为参数给出的? – 2010-03-11 21:46:52
位于任何地方,任何名称。 – 2010-03-12 00:03:42
我想你可能能够使用ADO, 查看SAS support site了解更多详情。
免责声明:
- 我没有看过这一段时间
- 我不是100%肯定,这并不需要额外的许可
- 我不知道,如果你能做到这一点使用Python
我从来没有尝试过http://www.oview.co.uk/dsread/,但它可能是你在找什么:“一个简单的命令行实用程序,用于在SAS7BDAT文件格式的数据集进行操作。”但请注意“这个软件应该被认为是实验性的,并不能保证是准确的,你自己承担风险,它只能在未压缩的Windows格式SAS7BDAT文件上工作。”
您可以制作一个SAS到CSV的转换程序。
保存在sas_to_csv.sas
如下:
proc export data=&sysparm
outfile=stdout dbms=csv;
run;
然后,假设你想按如下方式访问libname.dataset
,这个程序叫做:
sas sas_to_csv -noterminal -sysparm "libname.dataset"
的SAS数据转换成CSV可以输送到Python。在Python中,以编程方式生成“libname.dataset”参数将非常简单。
现在有一个Python包,让您阅读.sas7bdat文件,或将其转换为csv如果你喜欢
- 1. 在c#中读取sas数据集
- 2. 读取和减半sas数据集
- 3. 用Ruby读取SAS数据集?
- 4. 在SAS中多次读取数据集
- 5. 如何使用NHibernate从SAS读取数据集?
- 6. 如何读取SAS数据集中的变量名称?
- 7. 如何子集数据SAS
- 8. SAS Infile不读取任何数据行
- 9. 将Excel文件读入SAS数据集
- 10. SAS问题 - 无法读取该数据集的数字列
- 11. SAS从数据集
- 12. 在SAS数据集
- 13. 读取JSON文件并将其保存在SAS数据集中
- 14. 将多个csv文件读取到SAS数据集中
- 15. 读取n个文件到SAS来创建n个数据集
- 16. 读取数据集
- 17. 如何获取SAS中数据集的记录数
- 18. Android SQLiteDataBase:如何读取数据集?
- 19. 如何在读取SAS中的txt文件时读取缺失的数据?
- 20. 如何在SAS数据集中使用SAS宏
- 21. 我如何转换XML到SAS数据集采用SAS
- 22. 修改SAS数据集
- 23. 合并SAS数据集
- 24. 拆分SAS数据集
- 25. sas转置数据集
- 26. 合并数据集在SAS
- 27. SAS中的MGGarlic数据集
- 28. 出口数据集到SAS
- 29. SAS两个数据集
- 30. 删除SAS数据集
你想吃点什么程序/格式阅读呢?你将使用哪种编程语言? – 2010-03-03 19:19:09
我正在使用Python。我没有指定程序或格式,因为我不想限制回应;如果有方法通过DLL或API读取数据,我相信我可以弄清楚如何调用它。但是,我无法找到任何方法,无需从SAS获得许可其他程序。 – 2010-03-03 20:07:32
会写一个SAS宏将每个计数转换为自动解决方案吗? – 2010-03-04 08:19:57