Teradata быстро загружает вставку Null, когда поле имеет значение пустой строки («»)

#teradata #teradatasql

Вопрос:

Я использую TTU (быстрая загрузка) для загрузки данных в таблицу БД. Ниже приведен сценарий fastld для загрузки данных:

 LOGON 127.0.0.1/test,*****;  
DATABASE MyDb; 
BEGIN LOADING "MyTable" 
ERRORFILES error_table_1_607712459, error_table_2_1744826307 
CHECKPOINT 0; 
SET RECORD VARTEXT DELIMITER ',' QUOTE YES '"' ; 
DEFINE in_field_0 (VARCHAR(1000)),in_field_1 (VARCHAR(1000)), 
FILE = /tmp/fastload_data_file390318d5-b42d-47d6-8c0f-6822a0bbb6ef.dat;
INSERT INTO "MyTable" ("data","num" ) VALUES (:in_field_0,:in_field_1); 
END LOADING; 
LOGOFF;
 

Файл данных: fastload_data_file390318d5-b42d-47d6-8c0f-6822a0bbb6ef.dat

 "Hello World", "1"
"","2"
" ", "3"
null, "4"
 

После загрузки: MyTable

     msg          num
    Hello World  1
    null         2
                 3
    null         4
 

Когда файл данных содержит пустую строку («»), быстро загрузите вставку null в базу данных. Я пробовал использовать TTU 16.20 и 17.00 в ОС Ubuntu, поведение одинаковое в разных версиях. Мне интересно, как избежать вставки Null в таблицу. Есть какие-нибудь предложения?

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

1. Я думаю, что вам нужно включить nullif в определение своей колонки — field_0 (VARCHAR(1000),nullif='')

2. @Andrew Я не хочу вставлять значения null, ожидая, что fastload вставит пустые строки в таблицу. В приведенном выше примере для 2-й строки fastld вставляет значение null в таблицу для пустой строки. Я хочу избежать этого.

3. Дерьмо, я понял все наоборот, нуллиф-это противоположность тому, что ты хочешь. В вашей вставке попробуйте использовать coalesce — ...values ( COALESCE(:msg,'' '') . Не уверен, что это применимо для быстрой загрузки.

4. ОБЪЕДИНЕНИЕ недопустимо для быстрой загрузки или загрузки TPT. Вам потребуется использовать какую-либо другую утилиту, такую как MultiLoad или ОБНОВЛЕНИЕ TPT.

5. Да, @Фред, ты прав. Я вижу, что это ограничение от утилиты быстрой загрузки. Они упомянули об этом в разделе «Нулевое поле» на своей странице документа docs.teradata.com/r/r_6Z4JwVMhANtZFCIKEx7Q/…