• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQLのLOAD DATAに関して)

MySQLのLOAD DATAで固定長行フォーマットのファイルをロードする際の問題

このQ&Aのポイント
  • MySQLのLOAD DATAを使用して固定長行フォーマットのファイルをロードする際に、データが正しく登録されない現象が発生しています。
  • フィールドのデータが区切られずに取得されてしまうため、該当のフィールドにはデータが登録されていません。
  • char(2)の場合は2バイトの倍の4バイト、char(4)の場合は倍の8バイトとしてデータが区切られるため、フィールド2のデータが取得できません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>char(2)のフィールドに半角数字2桁をロードしようとしています。 なぜ、そんなことをするのでしょう? 格納される可能性があるのは、半角数字だけですか? 計算に用いることは、ないのでしょうか? 全角もあるのですか? あるいは、半角全角の混在もあるのですか? >このような場合はどうしたらよろしいのでしょうか? 何をしたいかによります。 たとえば、半角しか格納しないなら、MySQL 5.0以降では、列毎に文字コードを設定できます。これで、asciiなどに設定してしまう方法が考えられます。 create table t1 (c1 char(2) charcter set ascii, ・・・) 全角も格納するなら、入力データをタブ区切りにしておくといった方法が考えられます。データをタブ区切りにした上で、load data文も変更してみてください。 terminated by ''    ↓ terminated by '\t'

shigejun
質問者

お礼

回答ありがとうございました。 >たとえば、半角しか格納しないなら、MySQL 5.0以降では、列毎に文字コードを設定できます。これで、asciiなどに設定してしまう方法が考えられます。 これは知りませんでした。 テーブルには半角のみの格納なので、この方法で解決しました。 度々ありがとうございました。

その他の回答 (1)

回答No.1

MySQLの質問をする場合は、バージョンを明記してください。 すぐに思いつくだけでも、 MySQL 4.0以前・・・一部のジョイン、union、一時表などは実装済 MySQL 4.1・・・ジョインの拡張、サブクエリ、unicodeなどの実装。一部の仕様変更 MySQL 5.0・・・ビュー、ストアドプロシジャ、トリガなどの実装 といった、機能追加や一部の仕様変更があります。 char(n)のnも、MySQL 4.1から意味が変わりました。 文字コードを「日本語」などにしていて、半角数字を入力しようとしているからでは?

shigejun
質問者

お礼

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

関連するQ&A