0

データをテーブルにロードしようとしています(明らかに?)。私のテーブルは次のようになります。

CREATE TABLE IF NOT EXISTS `condensed` (
  `id` bigint(20) NOT NULL,
  `src` enum('C_X','C_AH','C_AO','C_B','H_X','H_AH','H_AO','H_B') NOT NULL,
  `hash` int(11) default NULL,
  `ihash` int(11) default NULL,
  `last_updated` datetime default NULL,
  PRIMARY KEY  (`id`,`src`),
  UNIQUE KEY `covering` (`id`,`src`,`hash`)
) ENGINE=MyISAM DEFAULT CHARSET=ascii;

次のようなデータファイルがあります。

320115816,'C_X',692983698,854142703,20120216220954
320124536,'C_X',588472049,1059436251,20100527232845
320120196,'C_X',452117509,855369958,20101118105505
...

しかし、私がそれを使用してロードするとき

LOAD DATA INFILE '/path/to/data.csv' 
IGNORE
INTO TABLE `condensed` 
(id, src, hash, ihash, last_updated);

最初の2つの列のみをロードします(hash、ihash、およびlast_updatedはnullです)。

320115816,'C_X',NULL,NULL,NULL
320124536,'C_X',NULL,NULL,NULL
320120196,'C_X',NULL,NULL,NULL
...

多くの警告が表示されます(おそらく、mysqlが入力セットから3つの列を破棄し、デフォルトを割り当てているためです)

Query OK, 20 rows affected, 100 warnings (0.00 sec)
Records: 20  Deleted: 0  Skipped: 0  Warnings: 100

(20だけでなく、数ミリオンのレコードをロードするつもりです)

mysqlimportを使用しても同じ問題が発生します。

LOAD DATAステートメントから明示的なフィールドリスト(データベース内のファイルと同じフィールドと順序)を省略すると、同じ結果になりました。

MySQLのバージョンは5.0.22であり、入力ファイルに印刷できない文字はありません。

ヘルプ!

4

5 に答える 5

1

Windowsを使用している場合は、Thiloの回答にいくつかの改善を加えるだけです。

LOAD DATA INFILE '/path/to/data.csv' IGNORE 
INTO TABLE `condensed` 
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\''
LINES TERMINATED BY '\r\n' --Windows right line terminator
(id, src, hash, ihash, last_updated)

それは私のために働いた。これにより、Windowsでの切り捨ての問題がすべて解決されました。こちらもご覧ください:http: //forums.mysql.com/read.php?79,76131,76871

于 2012-07-12T12:39:59.460 に答える
1

これを解決することはできませんでした。データをデータベースにマップするための小さなphpスクリプトを書くことになりました。

于 2013-04-23T08:43:01.960 に答える
1

MySQLが不平を言っているフィールドがたまたまテーブルの最後のフィールドである場合は、FIELDSTERMINATEDBYを修正する必要がある可能性があることに注意してください。Windowsでは、\ r\nではなく\nと言わなければなりませんでした。

于 2015-12-02T22:37:41.760 に答える
1

ロードされる前にWindowsファイルサーバーに移動されたIBMメインフレームで作成されたCSVファイルでも同様の問題が発生していました。最後を除くすべての行で切り捨ての警告が表示されていました。メインフレームファイルは問題ないように見えました。'\ r \ n'を追加すると、問題が解決しました。

于 2017-06-26T13:48:57.493 に答える
0

列挙型フィールドのみの引用符がインポートを混乱させていると思います。これを試して:

LOAD DATA INFILE '/path/to/data.csv' IGNORE 
INTO TABLE `condensed` 
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\''
(id, src, hash, ihash, last_updated)
于 2012-07-10T12:37:42.657 に答える