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設定します。dateLEFT(..., 0)

于 2012-12-01T21:48:22.657 に答える