親愛なる皆様、私は過去の市場データをファイルから MySQL テーブルにロードできる Java スクリプトに取り組んでおり、各データ レコードには「日付」フィールドと「タイムスタンプ」フィールドが含まれています。通常のレコードは次のように表されます。
01/11/2010,10:00:00.007,P,210.8,210.86,6,2,R,,2486662,P,P,,0,,N 01/11/2010,10:00:00.577,W, 210.51,211.61,1,1,R,,2487172,W,W,,0,,N
ここで、最初の列は「日付」を表し、2 番目の列は「タイムスタンプ」を表します (ミリ秒単位)。MySQL はミリ秒単位の粒度をサポートしていないため、'timestamp' フィールドの BIGINT (long) 表現を使用しています。
現在、ロード クエリは次のとおりです。
LOAD DATA LOCAL INFILE 'path to file'
INTO TABLE table
FIELDS TERMINATED BY ','
(@date, @time, remaining columns ...)
SET date=STR_TO_DATE(@date, '%m/%d/%Y'),
SET time=UNIX_TIMESTAMP( STR_TO_DATE(@time, '%H:%i:%S.%f') )
最後の行 (SQLExceptions をスローする) を除いて、クエリは正常に機能します。さまざまなフォーマット パターンを試しましたが、UNIX タイムスタンプに変換する前に、文字列からタイムスタンプへの変換に問題があります。Googleも助けていません。誰かが合理的な解決策を提案できれば、本当に感謝しています。残念ながら、MySQL を他のデータベースに変更することはできません。
よろしく、