最近有人删除了一个我认为对社区很有帮助的问题。我解释:


  我正在从Yahoo!获得CSV文件。 Finance API,然后我希望通过它更新以下MySQL表:

CREATE TABLE yahoo.static (
  symbol         VARCHAR(10) NOT NULL,
  exchange       VARCHAR(200),
  name           VARCHAR(300),
  capitalization DOUBLE,
  div_pay_date   DATE,
  book_value     DOUBLE,
  float_shares   BIGINT UNSIGNED,
  PRIMARY KEY (symbol)
);

  
  CSV文件具有以下格式:

“ AAUKF”,“ AAUKF”,“其他场外交易”,“ AAUKF”,“ ANGLO AMERICAN OR”,“ AAUKF”,29.271B,“ AAUKF”,“ 26-Apr-12”,“ AAUKF”,26.69,“ AAUKF” “,1134107000
  
  特殊问题包括:
  
  
  重复的多余值;
  表示数量级的后缀(例如KMB);和
  日期未以受支持的文字格式格式化。
  
  
  如何从这样的CSV文件更新表格?

最佳答案

LOAD DATA命令中,可以将列分配给用户变量,然后相应地执行适当的操作:

LOAD DATA INFILE '/tmp/ystaticB.csv'
    REPLACE
    INTO TABLE yahoo.static
    CHARACTER SET utf8              -- or however the file is encoded
    FIELDS
        TERMINATED BY ','
        OPTIONALLY ENCLOSED BY '"'  -- quotes appear to be optional
    LINES
        TERMINATED BY '\r\n'        -- or however newlines are encoded
    (symbol,@z,exchange,@z,name,@z,@c,@z,@d,@z,book_value,@z,float_shares)
    SET
        capitalization = @c * POW(10, CASE RIGHT(@c,1)
                           WHEN 'K' THEN 3
                           WHEN 'M' THEN 6
                           WHEN 'B' THEN 9
                         END),
        div_pay_date   = STR_TO_DATE(@d, '%e-%b-%y')

关于mysql - 使用包含不受支持格式的文字值的CSV数据更新MySQL表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20067103/

10-11 16:16