SQLite与SAS一起使用最简单的方法是什么?

问题描述:

我想研究如何从SAS访问SQLite数据库。做这件事最简单的方法是什么?是否有SAS产品,我们可以许可这样做?我不想使用ODBC驱动程序,因为这似乎是很久以前写的,并不是SQLite的正式组成部分。SQLite与SAS一起使用最简单的方法是什么?

+1

让我看看,如果我得到这个... SQLite的ODBC驱动程序不是SQLite的正式组成部分,所以你想看看,如果你能向SAS支付款项,这样他们就可以给你一些东西,就像SQLite的ODBC驱动程序一样......呃,也不是SQLite的正式组成部分? 说真的,我没有看到使用第三方产品的任何问题,只要产品被足够多的人使用足够强大的迹象。 如果您仍对此感到不适,我可能会建议将数据从SQLite导出到您感觉舒适的某个平台。 – 2009-12-30 22:39:35

+0

我同意。将SQLite数据库中的数据导出到您可以用满意的方式访问的东西。 SAS为数十个数据源提供(或长时间无SAS)连接器。 – DaveE 2009-12-30 22:42:05

+1

或使用通用的ODBC驱动程序。您可以查看ConnectionStrings.com,看看是否有人已经解决了您的设置 - 我看到6个SQLite参考。 – DaveE 2009-12-31 00:39:20

刚刚在我的rss提要中遇到了这个问题,不确定这是不是你想要的。

SAS MACRO IMPORTING SQLITE DATA TABLE WITHOUT ODBC

+0

这是非常好的,但我希望能找到一种方法,以便使用SQlite的引擎,以便更快地处理大型数据集。不过谢谢。 – xiaodai 2010-01-04 01:02:20

+0

链接已死亡,无法通过archive.org访问。编辑:但是,它被引用[宏通信SQLite和SAS没有ODBC](http://blog.sasanalysis.com/2011/05/macros-communicate-sqlite-and-sas.html?_escaped_fragment_=#!),这可能同样有用。 – eenblam 2016-12-08 21:54:19

+0

我捅了一下。原文的作者刘文瑞经常发表一篇[新博客](https://statcompute.wordpress.com/)。不幸的是,帖子似乎没有在2012年之前归档。 – eenblam 2016-12-08 22:03:11

SAS支持读取从管道的数据(在UNIX环境中)。本质上,您可以设置一个文件名语句来在主机环境中执行sqlite命令,然后像处理文本文件一样处理命令输出。

SAS支持页面:http://support.sas.com/documentation/cdl/en/hostunx/61879/HTML/default/viewer.htm#pipe.htm

例子:

*---------------------------------------------- 
* (1) Write a command in place of the file path 
*  --> important: the 'pipe' option makes this work 
*----------------------------------------------; 

filename QUERY pipe 'sqlite3 database_file "select * from table_name"'; 



*---------------------------------------------- 
* (2) Use a datastep to read the output from sqlite 
*----------------------------------------------; 

options linesize=max; *to prevent truncation of results; 

data table_name; 

    infile QUERY delimiter='|' missover dsd lrecl=32767; 

    length 
     numeric_id 8 
     numeric_field 8 
     character_field_1 $40 
     character_field_2 $20 
     wide_character_field $500 
    ; 

    input 
     numeric_id 
     numeric_field $ 
     character_field_1 $ 
     character_field_2 $ 
     wide_character_field $ 
    ; 

run; 



*---------------------------------------------- 
* (3) View the results, process data etc. 
*----------------------------------------------; 

proc contents; 
proc means; 
proc print; 
run;