1

csvファイルをmysqlにインポートするときに、タイムスタンプを文字列から日時データ型に変換しようとしています。しかし、私は#1411 - Incorrect datetime value: '2007-03-30 16:01:15' for function str_to_dateエラーが発生しています。

SQL:

load data infile 'C:/ProgramData/MySQL/MySQL Server 5.5/data/testfile.csv'
into table test
fields terminated by ','
lines terminated by '\n'
(date, col1,col2,col3,col4)
SET
date = str_to_date(date,'%Y.%m.%d %H:%i:%s.%f');

.csv のすべての行は、次のようにフォーマットされます。

2007.03.30 16:01:15.901,117.53,117.55,35600000,43700000

申し込んだ

SELECT str_to_date(date,'%Y.%m.%d %H:%i:%s.%f') FROM test

mysqlに既に保存されているデータをサンプリングするには、うまくいきました。

対象行dateは に設定されていDATETIMEます。

4

1 に答える 1

0

ユーザー変数を経由する必要があります。マニュアルが言うように:

列リストには、列名またはユーザー変数を含めることができます。ユーザー変数を使用すると、SET句を使用して、結果を列に割り当てる前にその値に対して変換を実行できます。

SET句内のユーザー変数は、いくつかの方法で使用できます。次の例では、最初の入力列を の値に直接使用しt1.column1、2 番目の入力列を、 の値に使用する前に除算演算が行われるユーザー変数に割り当てますt1.column2

LOAD DATA INFILE 'file.txt'
  テーブル t1 へ
  (列 1、@var1)
  SET column2 = @var1/100;

あなたの場合:

LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 5.5/data/testfile.csv'
  INTO TABLE test
  FIELDS TERMINATED BY ','
  LINES  TERMINATED BY '\n'
  (@date, col1, col2, col3, col4)
  SET date = STR_TO_DATE(@date, '%Y.%m.%d %H:%i:%s.%f');
于 2012-05-29T22:27:47.670 に答える