通过文本文件将DATA加载到mySQL中

时间:2014-09-28 19:43:16

标签: mysql sql database dml data-cleansing

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

2 个答案:

答案 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');
  ^

社会安全号码通常是九个个数字,而不是八个。