2014-04-08 3 views
1

Есть ли функция force, которая позволила бы завершить загрузку?Как заставить загрузку в SAS (или конвертировать все в Юникод)?

data testlib.testTab 
(
    dbtype=(
     var1 = 'VARCHAR(300)', 
     var2 = 'VARCHAR(150)', 
    ) 
) 
; 

set testt ; 
run ; 

Это прекрасно работает, однако редко я мог получить untranslatable character ошибку. В прошлый раз у меня был ', который был ТОЛЬКО в одном наблюдении. Я не знаю, почему все остальные ' загружены штрафом, кроме этого. Я предполагаю, что это не было ни в Юникоде, ни в Латинской.

Есть ли способ, которым я могу заставить загрузить, пропустить это наблюдение. , , или что-то еще. , , ничего, кроме отказа всей выборки.

Может преобразовать все значения в Unicode, чтобы быть уверенным, что загрузка успешно

Как я могу подготовить данные SAS набор, чтобы убедиться, что получает загружены нормально?

ответ

1

Если вы обеспокоены тем, что кодировка отличается, вы можете рассмотреть возможность использования функции KCVT. Это конвертирует из одной кодировки в другую. Вы могли бы попробовать, например.

data want; 
set have; 
yourvar = kcvt(yourvar,'utf8','ansi'); 
run; 

Вы бы лучше с определения того, что кодирующая ваши исходные данные в систему и обеспечивая «от» совпадает, так как это не будет работать, если источник не действует в этой кодировке.

Чтобы попытаться «пропустить» ошибку, попробуйте включить BULK_COPY и убедитесь, что предел ошибки достаточно высок. См. this doc page для более подробной информации. Пример с этой страницы:

В следующем примере, SAS прекращает обработку и пауз FastLoad , когда он встречает десятую ошибку.

libname mydblib teradata user=terauser pw=XXXXXX ERRLIMIT=10; 

data mydblib.trfload(bulkload=yes dbtype=(i='int check (i > 11)')); 
    do 
     i=1 to 50000;output; 
    end; 
run; 

Установите ERRLIMIT достаточно низко, чтобы предупредить вас о важных вопросах и достаточно высоко, чтобы пропустить тривиальные вопросы, как это; и используйте в файле данных bulkload=yes, чтобы убедиться, что он использует FASTLOAD. Оставьте часть int check, если вы действительно не хотите, чтобы ошибка на i> 11, конечно.

+0

Спасибо. Есть ли способ в SAS продолжить загрузку или молча игнорировать строку с плохим характером – Buras

+0

@Buras Я не знаю терадаты, но вот одно предложение (Отредактировано в). – Joe

2

Если вы хотите, чтобы заставить весь набор данных в Латинской кодировке, это должно сделать:

data clean (endoding= "latin1"); 
    set dirty (encoding= "asciiany"); 
run; 
Смежные вопросы