SAS - 将语句插入现有 SQL table
SAS - Insert statement into existing SQL table
这是我的代码:
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;
我遇到了这个错误
ERROR: CLI execute error: [Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid object name 'work.dlabackup'.
如果我这样做:
proc sql;
connect to odbc (dsn=ODC uid=sa pwd=XXXXX);
insert into tblDLA_Backup SELECT * FROM WORK.DLABACKUP;
disconnect from odbc;
退出;
我收到这个错误:
ERROR: File WORK.TBLDLA_BACKUP.DATA does not exist.
为什么我不能引用我的 SAS 数据集而只能插入?应该就这么简单..
出现第一个错误是因为您正在 SQL 服务器 上执行 SQL 指令,而不是 本地 .由于此指令包含对本地 SAS 数据集 的引用,因此会发生错误,因为 SQL 服务器认为它是自己数据库中的 table。
你在那个问题上采取了错误的方法。
你的第二种方法是正确的,因为你在 SAS 中执行 SQL,它都知道 local dataset 和 SQL 服务器 tables。乍一看它在语法上是有效的。
错误很明显:SAS 没有找到本地数据集 WORK.TBLDLA_BACKUP
因此,验证此数据集是否存在且未损坏:
在您的资源管理器window中,点击图书馆,然后点击工作 ,并验证 TBLDLA_BACKUP 是否存在,如果是,请打开它并检查您是否看到您的数据。
此时我不能说更多,但希望您能有所发现。
要写入国外数据库需要使用libref。
libname sqldb odbc dsn=ODC uid=sa pwd=XXXXX ;
PROC SQL;
INSERT INTO SQLDB.tblDLA_Backup SELECT * FROM &dlafile.;
quit;
请注意,您还需要修复它,以便您的宏变量包含存在的 table 的名称。
这是我的代码:
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;
我遇到了这个错误
ERROR: CLI execute error: [Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid object name 'work.dlabackup'.
如果我这样做:
proc sql;
connect to odbc (dsn=ODC uid=sa pwd=XXXXX);
insert into tblDLA_Backup SELECT * FROM WORK.DLABACKUP;
disconnect from odbc;
退出;
我收到这个错误:
ERROR: File WORK.TBLDLA_BACKUP.DATA does not exist.
为什么我不能引用我的 SAS 数据集而只能插入?应该就这么简单..
出现第一个错误是因为您正在 SQL 服务器 上执行 SQL 指令,而不是 本地 .由于此指令包含对本地 SAS 数据集 的引用,因此会发生错误,因为 SQL 服务器认为它是自己数据库中的 table。
你在那个问题上采取了错误的方法。
你的第二种方法是正确的,因为你在 SAS 中执行 SQL,它都知道 local dataset 和 SQL 服务器 tables。乍一看它在语法上是有效的。
错误很明显:SAS 没有找到本地数据集 WORK.TBLDLA_BACKUP
因此,验证此数据集是否存在且未损坏:
在您的资源管理器window中,点击图书馆,然后点击工作 ,并验证 TBLDLA_BACKUP 是否存在,如果是,请打开它并检查您是否看到您的数据。
此时我不能说更多,但希望您能有所发现。
要写入国外数据库需要使用libref。
libname sqldb odbc dsn=ODC uid=sa pwd=XXXXX ;
PROC SQL;
INSERT INTO SQLDB.tblDLA_Backup SELECT * FROM &dlafile.;
quit;
请注意,您还需要修复它,以便您的宏变量包含存在的 table 的名称。