SAS - 将语句插入现有SQL表

时间:2016-05-13 14:55:40

标签: sql insert sas dataset

这是我的代码:

PROC SQL;
connect to odbc (dsn=ODC uid=sa pwd=XXXXX);
EXECUTE ( INSERT INTO dbo.tblDLA_Backup SELECT * FROM &dlafile.) BY ODBC;
disconnect from odbc;
quit;

我收到此错误

  

错误:CLI执行错误:[Microsoft] [SQL Server Native Client 11.0] [SQL Server]无效的对象名称' work.dlabackup'。

如果我这样做:

proc sql;
connect to odbc (dsn=ODC uid=sa pwd=XXXXX);


insert into tblDLA_Backup SELECT * FROM WORK.DLABACKUP;

disconnect from odbc;

退出;

我收到此错误:

  

错误:文件WORK.TBLDLA_BACKUP.DATA不存在。

为什么我无法引用我的SAS数据集而只是插入?它应该很简单..

2 个答案:

答案 0 :(得分:0)

发生第一个错误是因为您正在 SQL Server 上执行SQL指令,而不是本地。由于此指令包含对本地 SAS数据集的引用,因此SQL Server认为它是自己数据库中的表,因此会发生错误。

你对那个采取了错误的做法。

您的第二种方法是正确的,因为您在SAS中执行SQL,它们都知道本地数据集 SQL服务器表。乍一看它在语法上是有效的。

错误很明显:SAS没有找到本地数据集WORK.TBLDLA_BACKUP

因此,请验证此数据集是否存在且未损坏:

资源管理器窗口中,点击图书馆,然后点击工作,并验证 TBLDLA_BACKUP 是否存在,如果是,请打开它并检查您是否看到了您的数据。

此时我不能多说,但你应该发现一些东西。

答案 1 :(得分:0)

你需要使用你要写入国外数据库的libref。

libname sqldb odbc dsn=ODC uid=sa pwd=XXXXX ;
PROC SQL;
  INSERT INTO SQLDB.tblDLA_Backup SELECT * FROM &dlafile.;
quit;

请注意,您还需要修复它,以便您的宏变量包含存在的表的名称。

相关问题