0

我在 mysql 中创建了一个名为 person 的表,并尝试使用文本文件将数据加载到其中。但是,我有一个限制,我必须在检查 SSN 是否应修剪为适当数量的字符时加载数据。如果该值为空,我还想将 SSN 设置为 NULL。但是,我使用的命令都没有工作。例如,我不知道为什么下面的行不起作用。

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)。请告诉我这是否不是该字段最合适的数据类型。

4

2 回答 2

1
SET SSN = CASE WHEN @SSN = '' THEN NULL ELSE LEFT(TRIM(@SSN), 8) END
于 2014-09-28T19:53:20.607 回答
1

SET 关键字出现一次,多个col = expr用逗号分隔。例如:

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

而且社保号一般是位字符,而不是八位。

于 2014-09-28T19:57:20.403 回答