如何将 sas7bdat 文件转换为 csv?

问题描述 投票:0回答:6

我想将 .sas7bdat 文件转换为 .csv/txt 格式,以便我可以将其上传到 Hive 表中。 我从外部服务器接收 .sas7bdat 文件,但我的计算机上没有 SAS。

csv hadoop hive sas hdfs
6个回答
15
投票

使用 R 外部包之一读取文件,然后使用该工具转换为 CSV。

http://cran.r-project.org/doc/manuals/R-data.pdf 第 12 页

改用 SAS7BDAT 软件包。它似乎忽略了自定义格式,读取底层数据。

在 SAS 中:

proc format;
value agegrp
   low - 12 = 'Pre Teen'
   13 -15 = 'Teen'
   16 - high = 'Driver';
run;

libname test 'Z:\Consulting\SAS Programs';

data test.class;
set sashelp.class;
age2=age;
format age2 agegrp.;
run;

在 R 中:

 install.packages(sas7bdat)
 library(sas7bdat)
 x<-read.sas7bdat("class.sas7bdat", debug=TRUE)
 x  

10
投票

Python 包

sas7bdat
(可在此处获取)包含一个用于读取 sas7bdat 文件的库:

from sas7bdat import SAS7BDAT
with SAS7BDAT('foo.sas7bdat') as f:
    for row in f:
        print row

和一个命令行程序无需编程

$ sas7bdat_to_csv in.sas7bdat out.csv

4
投票

我最近编写了这个包,允许您使用 Hadoop/Spark 将 sas7bdat 转换为 csv。它能够分割巨大的sas7bdat文件,从而实现高并行性。解析还使用@Ashpreet建议的parso

https://github.com/saurfang/spark-sas7bdat


3
投票

如果这是一次性的,您可以从这里免费下载SAS系统查看器(注册帐户后,也是免费的):

http://support.sas.com/downloads/package.htm?pid=176

然后您可以使用查看器打开 sas 数据集并将其另存为 csv 文件。据我所知,没有 CLI,但如果您真的愿意,您可能可以编写一个自动热键脚本或类似的脚本来将 SAS 数据集转换为 csv。

也可以使用 OLE DB 的 SAS 提供程序来读取 SAS 数据集,而无需实际安装 SAS,可在此处获取:

http://support.sas.com/downloads/browse.htm?fil=0&cat=64

但是,这相当复杂 - 如果您想了解一些文档,可以在这里找到一些文档:

http://support.sas.com/documentation/cdl/en/oledbpr/59558/PDF/default/oledbpr.pdf


2
投票

感谢您的帮助。我结束了我们在 java 中使用 parso 实用程序的工作,它的工作非常顺利。该实用程序将行作为对象数组返回,我将其写入文本文件。

我从以下位置引用了该实用程序:http://lifescience.opensource.epam.com/parso.html


0
投票

为了完成和补充Andrew的Python答案

pandas
还允许您使用函数
read_sas
读取SAS文件。您只需要传递适当的参数即可,例如:

import pandas as pd
import pathlib

path_file = pathlib.Path('../data/data_file.sas7bdat')

df = pd.read_sas(path_file, format='sas7bdat')

之后,您可以将 DataFrame 保存为几乎任何您想要的格式,包括

.csv

我从来没有遇到过这种方法的问题,但请注意,有些用户已经报告了一些bugs

© www.soinside.com 2019 - 2024. All rights reserved.