データファイルの日付は、MySQLがネイティブに理解できる形式になっています。二重引用符で囲まれているだけです。 LOAD DATA INFILE
に伝える必要があります 引用符の扱い方。次のようなものを試してください:
LOAD DATA LOCAL INFILE 'myData.csv'
INTO TABLE equity_last_import
FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY ','
LINES TERMINATED BY '\n'
(equity,last,last_date)
更新:
動作しないとおっしゃっていたので、テストテーブルを作成して動作することを確認しました。証拠は次のとおりです:
質問からのcsvデータを強調表示し、myData.csv
という新しいファイルに貼り付けました 私のシステムの/tmp
フォルダ。次に、mysqlコンソールに接続し、test
に切り替えました。 データベースを作成し、以下を実行しました:
mysql> create table equity_last_import (equity int, last decimal(10,2), last_date datetime) engine=innodb;
Query OK, 0 rows affected (0.02 sec)
mysql> LOAD DATA LOCAL INFILE '/tmp/myData.csv'
-> INTO TABLE equity_last_import
-> FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY ','
-> LINES TERMINATED BY '\n'
-> (equity,last,last_date);
Query OK, 10 rows affected (0.00 sec)
Records: 10 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select * from equity_last_import;
+--------+--------+---------------------+
| equity | last | last_date |
+--------+--------+---------------------+
| 4108 | 48.74 | 2013-09-16 16:15:04 |
| 4249 | 8.10 | 2013-09-16 16:15:04 |
| 4197 | 3.81 | 2013-09-16 17:20:00 |
| 4139 | 26.81 | 2013-09-16 16:15:04 |
| 4218 | 24.83 | 2013-09-16 17:20:00 |
| 4260 | 79.72 | 2013-09-16 16:15:04 |
| 4270 | 450.12 | 2013-09-16 17:20:00 |
| 4242 | 30.38 | 2013-09-16 16:15:04 |
| 4193 | 1.42 | 2013-09-16 16:15:04 |
| 4134 | 3.77 | 2013-09-16 16:15:04 |
+--------+--------+---------------------+
10 rows in set (0.00 sec)
見る?完璧に機能します。
別の更新:
現在、次のエラーが発生していることを指定しました:
Out of range value for column 'last_date' at row 1
CSVファイルにヘッダーがありますか?その場合は、IGNORE 1 LINES
を追加することをお勧めします LOAD DATA INFILE
に MySQLにヘッダーをスキップするように指示するコマンド。