LOAD DATA LOCAL INFILE修剪掉£

时间:2017-04-08 13:57:41

标签: mysql

我正在将一个csv文件转储到一个mysql表中,并且我已经成功地将所有字段中的小问题与一个字段进行了争论。 csv文件将值存储为£x.xx,我需要它为x.xx

我的代码是

LOAD DATA LOCAL INFILE 'filename.ext'
            INTO table TABLENAME
            FIELDS TERMINATED BY ','
            OPTIONALLY ENCLOSED BY '\"'   
            LINES TERMINATED BY '\r\n'
            IGNORE 7 LINES
            (@billValue)
            SET 
            billValue  = REPLACE(REPLACE(TRIM(@billValue), '£', ''), ',',''),
            ;

我也试过

 TRIM(LEADING '£' FROM NULLIF(@billValue, '')),

但它并没有坚持下去。我一直在

Incorrect decimal value: '£0.00' for column 'billValue'

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

正如ÁlvaroGonzález暗示的那样,我的CSV是UTF-8编码的,并且造成了问题。当我意识到每行末尾有三个额外的列时,问题就解决了。通过将它们分配给用户变量而不将变量分配给表列,它们将被丢弃。希望这有助于其他任何人。

谢谢Álvaro