Как загрузить данные из SAS в Teradata, где несколько файлов Excel импортируются в SAS с одинаковым именем столбца - PullRequest
0 голосов
/ 15 октября 2018

У меня есть 10 файлов Excel с одинаковыми именами столбцов, которые необходимо вставить в Teradata.Я создал одну таблицу в Teradata со всеми деталями столбцов и импортировал данные в SAS.Теперь, как мне перейти от SAS к Teradata?Мне нужен proc sql для этого.

1 Ответ

0 голосов
/ 15 октября 2018

Если вы уже создали таблицу в Teradata, одним из способов является использование proc append или proc sql с использованием libname.Fastload выполняет массовую загрузку.Пример показан ниже

 libname teralib teradata server=server user=userid pwd=password ;
 libname saslib '/u/mystuff/sastuff/hello';

 proc append base= teralib.staging_customer_ref(fastload =yes)
 base = saslib.cust_ref;
   run;

или с помощью оператора вставки в Proc sql

    proc sql;
    insert into teralib.staging_customer_ref
    (FastLoad=YES)
   select * from saslib.cust_ref;
   quit;   

. Пожалуйста, посмотрите ниже статью, в которой рассматриваются различные варианты перемещения данных из SAS в Teradata * 1007.*http://support.sas.com/resources/papers/EffectivelyMovingSASDataintoTeradata.pdf

Редактировать: Просто прочитайте ваш вопрос полностью, если вы хотите, чтобы имена соответствий в операторе вставки (который работает с позицией), вероятно, вам нужно создать макропеременную и использовать в ней вставку statemnt, и, вероятно, proc addnd лучше всего подходит для этого.сценарий, когда proc добавляется на основе имен столбцов

proc sql noprint;
select name into :cols separated by ','
 from Dictionary.columns
 where upcase(libname) = upcase('teralib')
  and upcase(memname) = upcase('staging_customer_ref');

   proc sql;
  insert into teralib.staging_customer_ref (FastLoad=YES)
  select &cols from saslib.cust_ref;

Edit2: похоже, что оба ваших набора данных не совпадают (т.е. типы данных не совпадают).вы можете предпринять следующие шаги

  1. вы можете изменить DDL таблицы Teradata и сделать вставку, или вы можете.

  2. do proc add с опцией force,так что у вас есть нулевые значения при несовпадении данных (не рекомендуется).

  3. создавать таблицу, а не вставлять (может быть сделано с помощью datastep или proc append) опция dbcreate_table_opts используется для создания соответствующего первичного индексадля таблицы Teradata.

точка 1 является более предпочтительной.

     proc sql;
    create table teralib.staging_customer_ref
    (FastLoad=YES dbcreate_table_opts= 'primaryindex(cust_number)') as
   select * from saslib.cust_ref;
   quit; 
...