【问题标题】:SAS - using proc imported CSV in proc SQL (error)SAS - 在 proc SQL 中使用 proc 导入的 CSV(错误)
【发布时间】:2019-09-24 08:39:43
【问题描述】:

我希望将通过“proc import”导入的 CSV 数据集与从 proc sql 中提取的数据集连接起来。有没有办法将我的 proc 导入文件扔到 proc sql 中?反之亦然?

这是我所在的地方:

proc import datafile = 'filepath'
out = dataname
dbms = CSV
replace
;
run;

proc sql
connect to netezza as dbcon
(server="url" database=sandbox user=me password="&password.");

create table work as

select distinct * from connection to dbcon
(
select distinct a.*

from
dataname as a
left join
sqltable as b
on
a.number = b.number

);
quit;

我目前收到此错误消息,但我不确定我的语法错误:

ERROR: CLI prepare error: ERROR:  relation does not exist database.ADMIN.dataname
SQL statement: select distinct a.*, b.* from dataname as a left join sqltable as b on a.number and b.number.

【问题讨论】:

    标签: sql csv sas connection


    【解决方案1】:

    使用 CONNECT TO 语句连接到 Netezza 后,括号内的任何内容,例如:

    select ... from connection to dbcon (...);
    exec (...) by dbcon;
    

    Netezza 盒子里。您创建的名为 dataname 的数据集存在于运行 SAS 会话的工作库中。

    所以这个问题可以通过几种方式解决:

    • 将数据上传到 Netezza
    • 使用 libname Netezza 引擎进行连接
    • 在 Netezza 中使用 SAS 中的 Insert into 创建表

    Libname 引擎

    您通常可以将 connect to 语句转换为 libname 语句,如下所示:

    libname dbcon netezza server="url" database=sandbox user=me password="&password.";
    

    如果您在 dbcon 库中创建 dataname,那么您的第二个查询应该可以工作,前提是您有权在 sandbox 数据库中创建表。

    【讨论】:

    • 谢谢,这很好。将其设置为 libname 语句并在 proc sql 语句中声明 dbcon.sqltable 更容易。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 2017-07-16
    相关资源
    最近更新 更多