В вашем запросе есть круглые скобки; попробуйте удалить их:
proc sql;
create table kyle.test as
select *
from noagree.no_agreement_list;
quit;
Но попробуйте это с маленьким столиком для начала. Кроме того, особенно с Teradata, очень важно указать индекс. Используя код, который вы используете, первая переменная SAS в наборе данных будет использоваться в качестве индекса. Плохо подобранный индекс может иметь серьезные негативные последствия для вашей базы данных (как для других пользователей, так и для вас самих.
Я использую SAS/Access для Teradata самостоятельно, поэтому не знаю, доступны ли эти опции с ODBC, но здесь пример того, как явным образом определить индекс и различные типы столбцов:
data kyle.test
(dbcreate_table_opts='primary index(INDEX_COLUMN)'
dbtype=(INDEX_COLUMN='INTEGER NOT NULL'
, USER_NAME='VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC'
, PHONE_NUMBER='CHAR(10)'
, CONTACT_DATE="DATE FORMAT 'yyyy-mm-dd'"
, FROM_LINE_NUM='SMALLINT'
, DOLLAR_DATA='DECIMAL(15,2)'
)
);
set noagree.no_agreement_list;
run;
Примечание это использует обычный SAS шаг данных, а не PROC SQL
, любая переменная в наборе данных, которые не перечислены в опции dbtype
будут скопированы используя стандартное преобразование SAS.
И, наконец, onc e вы получите это для работы, обязательно запустите шаг «сбор статистики», который вы можете сделать, используя инструмент SQL Assistant (SQLA). Я предполагаю, что у вас есть доступ к SQLA, особенно если у вас есть разрешение на запись в какую-либо базу данных.