2014-09-28 1 views
0

Я создал таблицу в mysql, которая называется person, и пытаюсь загрузить в нее данные с помощью текстового файла. Тем не менее, у меня есть ограничение, я должен загрузить данные, проверяя, должен ли SSN быть обрезан до соответствующего количества символов. Если значение пустое, я также хочу установить SSN в NULL. Однако ни одна из команд, которые я использую, не хочет работать. Например, я понятия не имею, почему строка ниже не работает.Загрузка DATA в mySQL с помощью текстового файла

LOAD DATA LOCAL INFILE '/home/ugrad19/jflickin/cs482/PERSON.txt' INTO TABLE person 
FIELDS TERMINATED BY ',' 
IGNORE 1 ROWS 
(PIDM, FNAME, LNAME, @SSN, @DATE, GENDER) 
SET SSN = LEFT(TRIM(@SSN), 8)    --this line messes it up. 
SET DOB = STR_TO_DATE(@DATE, '%m/%d/%Y'); 

Кто-нибудь знает, что я делаю неправильно? Спасибо!

Обратите внимание: я установил тип данных SSN в Varchar (10). Скажите, пожалуйста, если это не самый подходящий тип данных для этого поля.

ответ

1

Ключевое слово SET отображается раз, несколько col = expr разделены запятыми. Например:

SET SSN = LEFT(TRIM(@SSN), 9)    
    , DOB = STR_TO_DATE(@DATE, '%m/%d/%Y'); 
^

номера социального страхования, как правило, девять цифр символов, а не восемь.

+0

Я не знал о ',', и я предположил, что mysql начал отсчет в 0. НО СПАСИБО это сработало. –

1
SET SSN = CASE WHEN @SSN = '' THEN NULL ELSE LEFT(TRIM(@SSN), 8) END 
+0

Я получаю синтаксическую ошибку с этим и только с SET SSN = LEFT (TRIM (@SSN), 8) –

+0

на самом деле это сработало Спасибо! –

Смежные вопросы