3

現在、MySQL データベースにインポートする多数の CSV があります。ファイルには、各レコードのタイムスタンプが含まれており、次のような形式になっています (たとえば)。

2011-10-13 09:36:02.297000000

MySQL バグ #8523 を認識しています。これは、datetime フィールドへのミリ秒の格納がサポートされていないことを示しています。それにもかかわらず、datetime フィールドが空白として入力されるのではなく、秒の後にレコードが切り捨てられることを期待していました。

問題をミリ秒単位に絞り込みました (csv などのフォーマットとは対照的に)。

2011-10-13 09:36:02

正常にインポートされます。

このデータをゼロなしでインポートする方法を誰かが提案できますか? CSV が多すぎて、それぞれを手動で入力し、タイムスタンプの長さ/形式を調整できません。

ミリ秒はあると便利ですが、私のアプリケーションには必要ないので、数値を簡単に切り捨ててインポートできるソリューションがあれば幸いです。

ありがとう!

編集: 明確にするために、次のコマンドを使用して CSV をインポートしています。

mysqlimport --fields-enclosed-by="" --fields-terminated-by="," --lines-terminated-by="\n" --columns=id,@x,Pair,Time -p --local gain [file].csv

これは、レコードをインポートするのに非常に高速です。インポートするのに約 50m あるため、各行を読み取るのは適切なオプションではありません。

4

2 に答える 2

0

ミリ秒を使用するとインポートされませんが、ミリ秒なしでインポートされます。したがって、何らかの方法で部分文字列を作成する必要があります。MySQL には SUBSTRING などのさまざまな文字列関数があります。これは、毎回まったく同じ位置でこれらのミリ秒を切り取る必要があるため、使用できます。

ただし、これはクエリを実行するときに使用します。何らかの方法で自動化されているためにクエリを変更できない場合は、プロセスにステップを追加し、最初にデータを変更してからデータベースに追加することができます。簡単なスクリプトで、csv を読み取ったり、変更したり、再度書き戻したり、クエリを直接実行したりできます。

于 2011-10-26T14:47:14.523 に答える