我在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)。请告诉我这是否是此字段最合适的数据类型。
答案 0 :(得分:1)
SET SSN = CASE WHEN @SSN = '' THEN NULL ELSE LEFT(TRIM(@SSN), 8) END
答案 1 :(得分:1)
SET关键字出现一次,多个col = expr
以逗号分隔。例如:
SET SSN = LEFT(TRIM(@SSN), 9)
, DOB = STR_TO_DATE(@DATE, '%m/%d/%Y');
^
社会安全号码通常是九个个数字,而不是八个。