2017-09-01 2 views
0

私はMySQLが初めてです。私はテーブルこのようmysqlimport、どのように適切なテキストを読み込むには?

CREATE TABLE mail 
(
    t  DATETIME, # when message was sent 
    srcuser VARCHAR(8), # sender (source user and host) 
    srchost VARCHAR(20), 
    dstuser VARCHAR(8), # recipient (destination user and host) 
    dsthost VARCHAR(20), 
    size BIGINT,  # message size in bytes 
    INDEX (t) 
); 

で作成したときにI後者行われ、私は今TABLE

+---------------------+---------+---------+---------+---------+---------+ 
| t     | srcuser | srchost | dstuser | dsthost | size | 
+---------------------+---------+---------+---------+---------+---------+ 
| 2014-05-11 10:15:08 | barb | saturn | tricia | mars | 58274 | 
| 2014-05-12 12:48:13 | tricia | mars | gene | venus | 194925 | 
| 2014-05-12 15:02:49 | phil | mars | phil | saturn | 1048 | 
| 2014-05-12 18:59:18 | barb | saturn | tricia | venus |  271 | 
| 2014-05-14 09:31:37 | gene | venus | barb | mars | 2291 | 
| 2014-05-14 11:52:17 | phil | mars | tricia | saturn | 5781 | 
| 2014-05-14 14:42:21 | barb | venus | barb | venus | 98151 | 
| 2014-05-14 17:03:01 | tricia | saturn | phil | venus | 2394482 | 
| 2014-05-15 07:17:48 | gene | mars | gene | saturn | 3824 | 
| 2014-05-15 08:50:57 | phil | venus | phil | venus |  978 | 
| 2014-05-15 10:25:52 | gene | mars | tricia | saturn | 998532 | 
| 2014-05-15 17:35:31 | gene | saturn | gene | mars | 3856 | 
| 2014-05-16 09:00:28 | gene | venus | barb | mars |  613 | 
| 2014-05-16 23:04:19 | phil | venus | barb | venus | 10294 | 
| 2014-05-19 12:49:23 | phil | mars | tricia | saturn |  873 | 
| 2014-05-19 22:21:51 | gene | saturn | gene | venus | 23992 | 
| 0000-00-00 00:00:00 | NULL | NULL | NULL | NULL | NULL | 
| 2014-05-11 10:15:08 | NULL | NULL | NULL | NULL | NULL | 
| 2014-05-12 12:48:13 | NULL | NULL | NULL | NULL | NULL | 
| 2014-05-12 15:02:49 | NULL | NULL | NULL | NULL | NULL | 
| 0000-00-00 00:00:00 | NULL | NULL | NULL | NULL | NULL | 
+---------------------+---------+---------+---------+---------+---------+ 

郵送してきたこの

mysqlimport -p --local cookbook mail.txt 
Enter password: 
cookbook.mail: Records: 5 Deleted: 0 Skipped: 0 Warnings: 30 

これは私のtxtファイルである

t     srcuser srchost dstuser dsthost size 
2014-05-11 10:15:08 holmes saturn tricia mars  99974 
2014-05-12 12:48:13 ines  mars  gene  venus  94902 
2014-05-12 15:02:49 phica mars  phil  saturn  81048 

私の命令に何が間違っていますか?テキストファイルを使用しているのですか?なぜこれらのファイルはすべてNULLですか?

+1

「cookbook.mail:Records:5 Deleted:0 Skipped:0 Warnings:30」のようなものが表示されたら、最初にすべきことは 'show warnings;'です(別のステートメントを実行するとこの情報が失われるためです) )。そしてそこにはおそらくNULL値を持つ理由の情報があります。 – fancyPants

+0

@fancyPants私はLinuxシェルからコマンドを実行していますが、どこに警告を表示すればいいですか? – MishaVacic

+0

たとえば、mysqlクライアントの場合。しかし、mysqlimportを使用したことはありません(実際のコマンドLOAD DATA INFILEの別のプログラム)。だから、mysqlimportを使ってその方法を教えてもらえません。それは単なる一般的な助言でした。 – fancyPants

答えて

2

NULLの最初の行は、ファイルのヘッダー行用であり、最後の行は、ファイルの最後に空白行があるためです。

3つの内部行は、tの値が適切に設定されています。MySQLは値が入力ファイルでコンマで区切られ、入力ファイル内の別のもの(別名:tab文字)で区切られることを期待しています。

セパレータが見つからないため、入力ファイルには1つの列(t)しか含まれておらず、残りの部分はNULLで満たされていると考えられます。

あなたが正常にファイル解析するのにmysqlimportが必要とする情報を提供することができます。

  • --ignore-lines 1を - ヘッダー行を無視します。
  • --fields-terminated-by '\t' - ファイル内で値がtabで区切られていると仮定します。
  • 入力ファイルの最後の空白行は、テキストエディタを使用して手動で削除できます。

コマンドラインは次のとおりです。

mysqlimport -p --local --ignore-lines 1 --fields-terminated-by '\t' cookbook mail.txt 

mysqlimportについては、こちらをご覧ください。

関連する問題