0

我有一个巨大的文本文件需要上传到 mysql 表中

数据集跨越多年,但实际数据只有月份和日期信息。然而,数据集是从最近一年开始排序的。同一日期也可能有多个数据点。

如何告诉 mysql 将其上传到表并添加正确的年份?

这是我正在处理的数据类型的示例,其中最后几位是月:日

Some interesting string here             11:04
Some other interesting text              10:04
........................                 10:04

........................
Some old interesting text from last year 12:02
some boring news from last year          02:01
some news from 2 years ago               12:02
4

1 回答 1

1

假设您的文件从 2010 年开始,并且后面的日期意味着下一年:

SET @last_mnth := 0, @year := 2010;

LOAD DATA INFILE '/path/to/file.txt' INTO TABLE myTable
FIELDS SEPARATED BY '\t\t' (description, @d) SET
  date = CONCAT(
    LEFT(CONCAT(
      @mnth := SUBSTRING_INDEX(@d, ':',  1),
      @date := SUBSTRING_INDEX(@d, ':', -1),
      @year := @year + (
                 @mnth < @last_mnth
                 OR (@mnth = @last_mnth AND @date < @date)
               ),
      @last_mnth := @mnth
    ), 0),
    CONCAT_WS('-', @year, @mnth, @date)
  )
;

在这里,我们将您的“时间戳”分配给用户变量@d,然后将date列设置为由空字符串(LEFT(..., 0)为了将值分配给其他临时用户变量)和我们构造的日期文字的串联形成的字符串。

于 2012-12-01T21:48:22.657 回答