Java连接SAS,与SAS Server交互

  • Post author:
  • Post category:java




运行环境说明

sas-server: 9.4

java: 1.8

springBoot: 2.15



依赖环境准备

进入SAS Server的安装目录下,拷贝以下三个jar包,并上传治maven私服,

jar包内涉及隐私信息,自行上服务器提取。

sas.core.jar
sas.svc.connection.jar
sas.security.sspi.jar

因为使用的SAS 9.4版本的服务,所以上传到maven的版本也定为了9.4

maven引用如下

<dependency>
    <groupId>com.sas</groupId>
    <artfactId>sas-core</artfactId>
    <version>9.4</version>
</dependency>
<dependency>
    <groupId>com.sas</groupId>
    <artfactId>sas-svc-connection</artfactId>
    <version>9.4</version>
</dependency>
<dependency>
    <groupId>com.sas</groupId>
    <artfactId>sas-security-sspi</artfactId>
    <version>9.4</version>
</dependency>

另外还需要添加log4j的依赖,sas的日志输出使用的是log4j

<dependency>
    <groupId>log4j</groupId>
    <artfactId>log4j</artfactId>
    <version>1.2.17</version>
</dependency>



连接SAS Server

连接sasServer需要四个参数,host、port、userName、password

以下为连接使用的代码,按照实际情况进行修改

WorkspaceFactory factory = new WorkspaceFactory();
Properties properties = new Properties();
properties.put("host", "192.168.1.1");
properties.put("port", "8591");
properties.put("userName", "sas");
properties.put("password", "sas*123456");
IWorkspace workspace = factory.createWorkspaceByServer(properties);



获取JDBC连接,并执行sql

JDBC使用的Connection需要使用workspace进行获取,直接看demo代码,

需要注意的是,要先配置libname;如果需要看详细日志,还需要先配置LanguageSerrvice。

libname = libname + 数据库名 + 工作空间路径;

工作空间选择在sas所在的主机先手动创建好,也可以选择使用FileService进行动态创建;

日志主要考虑需要打印的数量;

Connection conn = null;
Statement sta = null;
try{
    //配置libname 这里以sas库和C盘test目录为工作空间
    String libName = "libname sas 'C://test'";
    ILanguageSerrvice libLang = workspace.LanguageSerrvice();
    libLang.Submit(libName);

    //配置日志 这里以500行为例子
    ILanguageSerrvice logLang = workspace.LanguageSerrvice();
    logLang.FlushLog(5000);

    //获取sas的dataService
    IDataService ds = workspace.DataService();

    //jdbc逻辑
    conn = new MVAConnection(ds, new Properties());
    sta = conn.createStatement();
    String sql = "create table sas.TEST(nam char(50) label='名称');"
    statement.execute(sql);
    sql = "insert into sas.TEST values('test01');"
    statement.execute(sql);
}finally{
    if(sta != null){
        sta.close();
    }
    if(conn != null){
        conn.close();
    }
}

执行完成后,可以进入到工作空间下(如C://test),查看结果;

双击打开test.sas7bdat文件,可以看到刚刚执行的表结构和数据了。



版权声明:本文为running17原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。