アプリ版:「スタンプのみでお礼する」機能のリリースについて

MySQLのLOAD DATAで、固定長行フォーマットのファイルのロードを行っています。
その際、以下のような現象の原因がわからず困っています。

データをロードするテーブル、ロードファイル、実行コマンドは以下になります。
--------------------
テーブル
--------------------
フィールド1 char(2)
フィールド2 char(2)

--------------------
ロードファイル(テキストファイル)
--------------------
1020
3040

--------------------
実行コマンド
--------------------
LOAD DATA INFILE 'ロードファイル'
INTO TABLE テーブル
FIELDS
TERMINATED BY ''
ENCLOSED BY ''
LINES
TERMINATED BY '\r\n';


結果は以下のように、フィールド2にはデータが登録されていません。
-------------
フィールド1  | フィールド2
-------------
10      | 
30      | 

望んでいる結果は以下のような結果です。
-------------
フィールド1 | フィールド2
-------------
10     |20 
30     |40 



いろいろ試してみたのですが、
どうもchar(2)の場合は2バイトの倍の4バイト、
char(4)バイトの場合は倍の8バイトというふうにデータが区切られるため、
フィールド1のデータを取得する際に4バイト取得してしまっており、
フィールド2の分のデータが取得できません。

どこに不備があるのかわからないのですが、
何か原因の検討がつく方がいたら、ご回答よろしくお願いします。

A 回答 (2件)

>char(2)のフィールドに半角数字2桁をロードしようとしています。



なぜ、そんなことをするのでしょう?
格納される可能性があるのは、半角数字だけですか?
計算に用いることは、ないのでしょうか?
全角もあるのですか?
あるいは、半角全角の混在もあるのですか?

>このような場合はどうしたらよろしいのでしょうか?

何をしたいかによります。
たとえば、半角しか格納しないなら、MySQL 5.0以降では、列毎に文字コードを設定できます。これで、asciiなどに設定してしまう方法が考えられます。

create table t1
(c1 char(2) charcter set ascii, ・・・)

全角も格納するなら、入力データをタブ区切りにしておくといった方法が考えられます。データをタブ区切りにした上で、load data文も変更してみてください。

terminated by ''
   ↓
terminated by '\t'
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

>たとえば、半角しか格納しないなら、MySQL 5.0以降では、列毎に文字コードを設定できます。これで、asciiなどに設定してしまう方法が考えられます。

これは知りませんでした。
テーブルには半角のみの格納なので、この方法で解決しました。

度々ありがとうございました。

お礼日時:2009/02/25 11:31

MySQLの質問をする場合は、バージョンを明記してください。



すぐに思いつくだけでも、

MySQL 4.0以前・・・一部のジョイン、union、一時表などは実装済
MySQL 4.1・・・ジョインの拡張、サブクエリ、unicodeなどの実装。一部の仕様変更
MySQL 5.0・・・ビュー、ストアドプロシジャ、トリガなどの実装

といった、機能追加や一部の仕様変更があります。

char(n)のnも、MySQL 4.1から意味が変わりました。

文字コードを「日本語」などにしていて、半角数字を入力しようとしているからでは?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
MySQLのバージョンは5.0.22です。

>文字コードを「日本語」などにしていて、半角数字を入力しようとしているからでは?
はい、まさにその通りです。
データベースの文字コードはsjisで、ロードファイルもsjisです。
char(2)のフィールドに半角数字2桁をロードしようとしています。
このような場合はどうしたらよろしいのでしょうか?
度々すみませんが、よろしくお願いします。

お礼日時:2009/02/23 18:18

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

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