2017-12-22 11 views
1

timestamp DATETIME列のテーブルを作成しましたが、UNIXのタイムスタンプ付き行を持つファイルCSVからデータをインポートしようとしています。CSVから(My)SQLデータベースにインポートする際にUnixのタイムスタンプを自動的にDATETIMEカラムに変換できますか?

しかし、私はDataGripのCSVインポート機能を使用しようとすると、私は

1:1: conversion failed: "1394669640" to datetime 
2:1: conversion failed: "1394670060" to datetime 
3:1: conversion failed: "1394670480" to datetime 
4:1: conversion failed: "1394670780" to datetime 

の曲にエラーが出るかもしれないdataGripが最高のツールではありませんが、それはことを考えると、ほとんどすべて私が行うことができますDBサーバーを稼動するマシンに直接アクセスすることはできません[*]。明らかに、これは、列をINTに設定すると機能します。

テーブルが自動的に変換されるように設定する方法はありますか?


[*]私はやるが、DBMSは、ホスト上のCSVファイルのコピーの短い、その後、容器の内側に、私はLOAD DATA INFILEのようなトリックを再生すると、設定することはできませんので、ドッカーコンテナ内で実行されています列はFROM_UNIXTIME()です。

答えて

0

LOAD DATA LOCAL INFILEを使用すると、CSVファイルをコンテナにコピーすることなく、リモートのMySQL(つまり、ドッカーコンテナ内)にCSVファイルをロードできます。 local-infileオプションは、リモートクライアントを許可するように、サーバー上の両方を有効にし、また、クライアントにする必要があります

mysql> create table MyTable (timestamp DATETIME PRIMARY KEY); 

mysql> load data local infile 'data.csv' into table MyTable (@dummy) 
    SET timestamp = FROM_UNIXTIME(@dummy); 
Query OK, 4 rows affected (0.01 sec) 
Records: 4 Deleted: 0 Skipped: 0 Warnings: 0 

mysql> select * from MyTable; 
+---------------------+ 
| timestamp   | 
+---------------------+ 
| 2014-03-13 00:14:00 | 
| 2014-03-13 00:21:00 | 
| 2014-03-13 00:28:00 | 
| 2014-03-13 00:33:00 | 
+---------------------+ 

注意。上記の例を実行するには、私のサーバの/etc/my.cnflocal-infile=1を有効にしなければなりませんでした。また、クライアントはオプションmysql --local-infileで実行しました。

ERROR 1148(42000):これらのオプションの両方がなければ、私はこの非常に紛らわしいエラーを得た使用コマンドは、詳細については、このMySQLバージョン

読むhttps://dev.mysql.com/doc/refman/5.7/en/load-data-local.htmlで許可されていません。

関連する問題