0

MySQL テーブルにデータをインポートしようとしています。

テーブル :

CREATE TABLE `MYTABLE` (
  `F1` bigint(20) NOT NULL,
  `F2` bigint(20) NOT NULL,
  `F3` int(11) NOT NULL,
  `F4` bigint(20) DEFAULT NULL,
  `F5` tinyint(4) NOT NULL,
  `F6` bigint(20) NOT NULL,
  `F7` bigint(20) NOT NULL,
  PRIMARY KEY (`F1`)
) ENGINE=InnoDB default charset=latin1;

データ ファイルには、次の形式のレコードが含まれており、タブで区切られています。

229733561174    44224449355443  0   0   0   55555557555000  12345678901

インポート コマンド:

mysql> load data infile 'try.txt' INTO TABLE MYTABLE;

私が得る警告:

レベル コード メッセージ
警告 1366 不正な整数値: 行 1 の列 'F1' の '229733561174'
警告 1366 不正な整数値: 行 1 の列 'F2' の '44224449355443'
警告 1366 不正な整数値: 行 1 の列 'F3' の '0 0 0 55555557555000 12345678901'
警告 1261 行 1 にはすべての列のデータが含まれていません
警告 1261 行 1 にはすべての列のデータが含まれていません
警告 1261 行 1 にはすべての列のデータが含まれていません
警告 1261 行 1 にはすべての列のデータが含まれていません
7 rows in set (0.00 sec)

最初の 2 列Incorrect integer valueの値と、3 列目から 7 列目の値がすべて 1 つの列として扱われる理由がわかりません。

フィールド区切り文字を「,」に変更してみましたが (load data コマンドで指定)、それでも同じ警告が表示されました。

出力テーブルには、すべての列に 0 が含まれます (NULL になるオプションの列を除く)。

誰かが私が間違っていることを教えてもらえますか?

4

2 に答える 2

0

このエラーは、データが実際にはタブで区切られていないことを意味します:

| Warning | 1366 | Incorrect integer value: '0  0       0       55555557555000
12345678901' for column 'F3' at row 1 |

おそらく最初の 2 つの区切り文字はタブですが、残りは可変数のスペースです。

フィールドの区切り方を確認して標準化することをお勧めします。

LOAD DATA INFILEデフォルトに依存するのではなく、コマンドで区切り文字を明示的に宣言することもお勧めします。例えば:

load data infile 'try.txt' 
INTO TABLE MYTABLE
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'
LINES TERMINATED BY '\n' STARTING BY '';
于 2013-10-21T17:27:45.540 に答える