руководство по sas enterprise импортирует csv-файл в реляционную базу данных, пока таблица уже существует

#sas #enterprise-guide

Вопрос:

Я хочу использовать sas enterprise guide 8.3 для импорта csv-файла в реляционную базу данных. Я запускаю мастер импорта данных, нахожу файл csv в локальной папке(ОС Windows), затем нахожу библиотеку реляционной базы данных. Из графического интерфейса я не могу настроить сопоставление между источником и целью. целью является таблица в реляционной базе данных, в которой больше полей, чем в файле csv. Сбой мастера импорта данных произошел из-за того, что мастер попытался заменить уже существующую таблицу.

таким образом, я не могу использовать мастер импорта данных для достижения своей цели? только со следующим кодом ?

 Libname TD teradata userid=xxxx password=xxxx fastload=Yes
proc import 
        dbms=csv                    /* specify you load comma separated data */
        datafile="C:temptest.csv" /* fill in your data file                */
        out=TD;                    /* specify de dataset to load it to      */
      /*  replace;                   so TEST will not replaced if it exists */
run;
 

Я не уверен, что приведенный выше код может решить мою проблему: out =TD не указывает имя таблицы, просто укажите целевую базу данных. Большое вам спасибо!

Комментарии:

1. Что происходит, когда вы запускаете этот код?

2. Соответствуют ли заголовки в CSV именам переменных в целевом наборе данных?

Ответ №1:

Похоже, вы пытаетесь добавить этот файл .csv в существующую таблицу Teradata с помощью SAS. Вы можете сделать это в два этапа:

  1. Импортируйте файл .csv в SAS как временную таблицу SAS (в качестве альтернативы, вы можете импортировать ее как временную таблицу в Teradata, если хотите).
  2. Добавьте временную таблицу SAS в основную таблицу Teradata

Механизм доступа SAS Teradata будет обрабатывать весь перевод кода из одной базы данных в другую:

 Libname TD teradata userid=xxxx password=xxxx fastload=Yes;

proc import 
    dbms = csv                    
    file = "C:temptest.csv" 
    out  = tempTable;                    
    replace;                  
run;

proc append base = td.have
            data = tempTable
            force;
run;
 

Или вы можете использовать SQL для добавления:

 proc sql;
    insert into td.have
        select * from tempTable
    ;
quit;