- ベストアンサー
LOAD DATA INFILE で最初のカラム以外がロードされないで NULL になってしまう
お世話になります。MySQL勉強中の初心者です。 環境: MySQL5.1 OSX10.4 ターミナル (Winでいう「cmdプロンプト」です) 問題: LOAD DATA INFILE でコマンドは通るのですが、select*from でチェックすると第一カラム(左端)だけは正常にロードされるんですが、残りのカラムがすべて NULL となってしまって切ないです。 ロードしたデータの例: 1011 jan c001 a01 1012 jan c001 a01 1013 jan c002 a03 構造としては、こんな感じです。↓ 文字列[tab]文字列[tab]文字列[tab]文字列[空白スペース?] 現在の結果: | 1011 | NULL | NULL | NULL | | 1012 | NULL | NULL | NULL | | 1013 | NULL | NULL | NULL | 今は小規模なデータだけなのでやむなく手打ちでガコガコ入れてますが、原因を解明したいと思います。 どなたかアドバイス頂けると幸いです。宜しくお願いします。orz れざ
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
(1)テーブル名が一致してませんね load data 文 「order_line」 show create table 文 「order1」 (2)LOAD DATA 文がカンマ区切りなのに提示されているデータはTAB区切り。 (3)MAC OSXなのに行区切りに"\r\n" LOAD DATA INFILE '/yos-data/00_mscit/07_db/wk3-asg/order1.txt' INTO TABLE order_line FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'; で試してみては?
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
以下を補足説明願います。 (1)LOAD DATA INFILE文の具体的な指定内容 (2)表の定義内容 →データ型は必須。show create table文の結果なら、なおいい。 (3)文字コード →show variables like '%char%'の表示結果。 LOAD DATA INFILEを入力しているクライアント(今回は、「OSX10.4 ターミナル」)から入力した結果
補足
うー、すみません、またお世話になります...。orz (1)LOAD DATA INFILE文の具体的な指定内容(通ります): LOAD DATA INFILE '/yos-data/00_mscit/07_db/wk3-asg/order1.txt' INTO TABLE order_line FIELDS TERMINATED BY "," LINES TERMINATED BY "\r\n"; ロードしたファイル order1.txt -------------------------------------- 1011 jan c001 a01 1012 jan c001 a01 1013 jan c002 a03 1014 jan c003 a03 1015 jan c003 a03 1016 jan c006 a01 1017 feb c001 a06 1018 feb c001 a03 1019 feb c001 a02 1020 feb c006 a03 1021 feb c004 a06 1022 mar c001 a05 1023 mar c001 a04 1024 mar c006 a06 1025 apr c001 a05 1026 may c002 a05 1035 may c006 a06 1036 may c006 a06 1050 may c006 a01 -------------------------------------- (2)表の定義内容 mysql> show create table order1; ----------------------------------------+ | order1 | CREATE TABLE `order1` ( `ordno` char(4) NOT NULL, `month` char(3) DEFAULT NULL, `cid` char(4) DEFAULT NULL, `aid` char(3) DEFAULT NULL, PRIMARY KEY (`ordno`), KEY `cid` (`cid`), KEY `aid` (`aid`), CONSTRAINT `order1_ibfk_1` FOREIGN KEY (`cid`) REFERENCES `customer` (`cid`), CONSTRAINT `order1_ibfk_2` FOREIGN KEY (`aid`) REFERENCES `agent` (`aid`) ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +--------+------------------------------ (3)文字コード mysql> show variables like '%char%'; +--------------------------+------------------------------------------------------+ | Variable_name | Value | +--------------------------+------------------------------------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql-5.1.34-osx10.4-i686/share/charsets/ | +--------------------------+------------------------------------------------------+ LOAD DATA INFILEを入力しているクライアント(今回は、「OSX10.4 ターミナル」)から入力した結果 mysql> select*from order1; +-------+-------+------+------+ | ordno | month | cid | aid | +-------+-------+------+------+ | 1011 | NULL | NULL | NULL | | 1012 | NULL | NULL | NULL | | 1013 | NULL | NULL | NULL | | 1014 | NULL | NULL | NULL | | 1015 | NULL | NULL | NULL | | 1016 | NULL | NULL | NULL | | 1017 | NULL | NULL | NULL | | 1018 | NULL | NULL | NULL | | 1019 | NULL | NULL | NULL | | 1020 | NULL | NULL | NULL | | 1021 | NULL | NULL | NULL | | 1022 | NULL | NULL | NULL | | 1023 | NULL | NULL | NULL | | 1024 | NULL | NULL | NULL | | 1025 | NULL | NULL | NULL | | 1026 | NULL | NULL | NULL | | 1035 | NULL | NULL | NULL | | 1036 | NULL | NULL | NULL | | 1050 | NULL | NULL | NULL | +-------+-------+------+------+ 情報が抜けてないと良いんですが…。宜しくお願いします。
お礼
動きましたー(T.T)!!! (1) はgooに投稿した時の私の打ちミスでした。失礼しました(汗)。 (2) と (3) が主な原因のようです。ご指摘有り難うございました。 MySQL初心者の上に、仕事では Win で正規表現を時たま使うので、Macとの表記の違いがあることに気付きませんでした。勉強になりました。orz