首页 > 解决方案 > SAS - 在 proc SQL 中使用 proc 导入的 CSV(错误)

问题描述

我希望将通过“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.

标签: sqlcsvsasconnection

解决方案


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

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

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

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

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

库名引擎

您通常可以将connect to语句翻译成 libname 语句,如下所示:

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

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


推荐阅读