重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お世話になります。MySQL勉強中の初心者です。

環境:
MySQL5.1
OSX10.4 ターミナル (Winでいう「cmdプロンプト」です)

問題:
LOAD DATA INFILE でコマンドは通るのですが、select*from でチェックすると第一カラム(左端)だけは正常にロードされるんですが、残りのカラムがすべて NULL となってしまって切ないです。

ロードしたデータの例:
1011janc001a01
1012janc001a01
1013janc002a03
構造としては、こんな感じです。↓
文字列[tab]文字列[tab]文字列[tab]文字列[空白スペース?]

現在の結果:
| 1011 | NULL | NULL | NULL |
| 1012 | NULL | NULL | NULL |
| 1013 | NULL | NULL | NULL |

今は小規模なデータだけなのでやむなく手打ちでガコガコ入れてますが、原因を解明したいと思います。
どなたかアドバイス頂けると幸いです。宜しくお願いします。orz

れざ

A 回答 (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';

で試してみては?
    • good
    • 0
この回答へのお礼

動きましたー(T.T)!!!

(1) はgooに投稿した時の私の打ちミスでした。失礼しました(汗)。
(2) と (3) が主な原因のようです。ご指摘有り難うございました。

MySQL初心者の上に、仕事では Win で正規表現を時たま使うので、Macとの表記の違いがあることに気付きませんでした。勉強になりました。orz

お礼日時:2009/06/10 18:41

以下を補足説明願います。



(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
--------------------------------------
1011janc001a01
1012janc001a01
1013janc002a03
1014janc003a03
1015janc003a03
1016janc006a01
1017febc001a06
1018febc001a03
1019febc001a02
1020febc006a03
1021febc004a06
1022marc001a05
1023marc001a04
1024marc006a06
1025aprc001a05
1026mayc002a05
1035mayc006a06
1036mayc006a06
1050mayc006a01
--------------------------------------

(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 |
+-------+-------+------+------+

情報が抜けてないと良いんですが…。宜しくお願いします。

補足日時:2009/06/06 23:09
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す