• 締切済み

郵便番号CSVデータのOracleでの型

基幹システムの開発で郵便局サイトからダウンロードする CSVファイルを利用することになりました。 テーブルレイアウトは基本的にCSVレイアウトに準ずると決定しています。 (不必要な列を削除するのではなく全データを取り込むという意味) しかし、列の長さをどうすればよいのか分かりません。 特に「フィールド9」(町域)についてです。 ネットで少し調べてみましたが256byteとしたサンプルソースも有りました。 しかし、256byteを超えるデータは将来においてもあり得ない、 というような保証のような記述は有りません。 ちなみにデータ上の最長は74byteでした。 結構このCSVを利用するというのはあるようですが、 型はどのようにして定義されましたか? また、根拠となる情報があれば ユーザーに説明が出来ますので、 ご紹介をお願いいたします。

  • Oracle
  • 回答数2
  • ありがとう数1

みんなの回答

  • MZ-80B
  • ベストアンサー率56% (46/81)
回答No.2

256バイトはやめた方がいいですね。 列ヘッダを考慮すると256バイトではなく250バイトで やめておいた方が良いです。 オラクルのLOBでなければブロック単位I/Oで内部はリストなので7バイトでも8バイトでも基本は同じです。

参考URL:
http://biz.rivus.jp/words/record_piece.html
  • yama06
  • ベストアンサー率61% (101/164)
回答No.1

最長の74byteの2倍以上で、かつ2の倍数として256byte でいかがでしょうか。 システムの運用機関が仮に10年なら、10年以内に 町域の併合などによって現在の最長の2倍になるような ことがあっても対応可能、という考え方で大体は 大丈夫かと思われます。

Luclin
質問者

お礼

書き込みありがとうございます。 郵便局が最長桁数を保証するなどと発表しているわけも無く、 やはり、そのような考え方で進めるしかない様な感じですね。 >かつ2の倍数として256byte というのは根拠として持っておくと良さそうなのですが、 明らかにレスポンスで有利になる、などの理屈があるのでしょうか。 もしそうなら、商品コード検討時等にも応用できそうです。 「7byteでも8byteでも良いなら、断然8byteですよ」 のようにです。 よろしくお願いします。

関連するQ&A

  • オラクルのデータ型について

    オラクルのデータ型について教えてください。 ものすごく基本的な質問かもしれませんが、今後のことを考えて質問させていただきます。 文字列の型の"CHAR"と"VARCHAR2"についてです。 "CHAR"は固定長で2000バイト、 "VARCHAR2"は可変長で4000バイトとマニュアル等には記載されていますが、 いまいちピンときません。 そこで、それぞれの長所、短所。どのような時にどちらを使用したらいいのか 等をなるべく詳しく教えてもらえないでしょうか? 宜しくおねがいします。

  • csvカンマ区切りデータに=""を入力したい

    csvカンマ区切りデータに、例えば、 ="00",="123",="456" といった感じで入力したいのです。 大元のcsvカンマ区切りデータで、 00,123,456 が入っているので、これをExcelを使ってText変換や書式設定で文字列にして みたのですが、csvデータとしては=""としては保存されていないのです。 どなたか、こういった型変換に詳しいかたご連絡をお待ちしています。

  • csvファイルのインポート

    Accessでcsvファイルをインポートさせようとしています。しかし、「F1フィールドがありません」のようなエラー表示が出て、できません。私の予想では、テーブルの型とcsvファイルの型が違うのではないかと思っています。テーブルには、数値型、テキスト型、日付/データ型があります。 保存したcsvファイルをExcelで開くと日付がApr-01や、2001/06/26となったりしていました。どこかで型変換のようなことをするのでしょうか?csvのことはよく分かりません。どうか、よろしくお願いします。

  • ExcelのVBAでCSVを読み込むと通貨になる

    Excel2010のVBAでCSVファイルを読み込んで処理させたいのですが、読み込んだデータをExcelが勝手に別のデータに変えてしまうので困っています。 例えば、123,456というデータは、フィールドにカンマがあるので、CSVでは"123,456"となりますが、これを以下のようなVBAのコードで読み込ませると、書式が通貨として扱われてしまって、データも123456になってしまいます。文字列として読み込まれていれば正しいデータとして読み込まれるように思うのですが、文字列として読み込ませる方法が分かりません。正しく元のデータ123,456のまま読み込ませるにはどうすればいいのでしょうか。 なお、CSVの各フィールドにカンマやダブルクォーテーションが混在していると、各フィールドに分割する処理が複雑でよく分からないので、下記のコードのようにExcelの機能でCSVを各フィールドに分割される方法で読み込ませたいです。 よろしくお願いします。 Workbooks.Open Filename:= "file.csv"

  • csvファイルを読み込んでデータベースのデータと比較して異なっていた場

    csvファイルを読み込んでデータベースのデータと比較して異なっていた場合は更新するようにしたいと考えています。 csvデータ…10 データベースから取得したデータ…10.0 ※比較するテーブルのフィールドのデータ型はFLOAT型です。 文字列を数値変換して比較、またはデータベースから取得したデータを文字列に変換して比較、どっちがいいのでしょうか。 またどのように比較すればいいのでしょうか。 くだらない質問かもしれませんが宜しくお願いします。

  • csvを使った画像データの保存と表示

    お世話になっております.ご教授いただけると助かります. データーベースの代わりにcsvを利用します. phpのバージョンは5を使っています. 入力用画面としてtouroku.phpを作成します. 内容は画像の説明(text)と画像データ(jpg)を指定するものです. 送信をするとcsvファイル(sample.csv)にデーターが保存されます. 画像データはPCの上にあるjpgをサーバの決められたフォルダにアップロードします. 続いてhyouzi.phpで検索を行います. sample.csvに保存されている情報から結果として説明と画像を表示します. textをcsvに保存して参照・編集はできております. 現在jpgの保存がうまくできません.このため参照・編集もできません. 参考としてtextとjpgをcsvに保存するサンプルを探しております. よろしくお願いいたします.

    • ベストアンサー
    • PHP
  • CSVファイルインポート時の制限について

    AccessVBAでcsvファイルをインポートするマクロを作っています。 現在、インポート定義を利用して、データ型を指定したインポートができているのですが、1点だけ問題があり、質問します。 インポートするcsvファイルのA列にIDが入力されています。 そのA列の末尾に、ID(数値型)ではない「<b>32</b><br />」という値が入っています。 Accessのテーブルでは、このIDのフィールドは数値型で管理している為、この1レコードだけ エラーとなり、エラーテーブルが作られ、また、インポート先のテーブルには空のレコードができてしまいます。 この末尾の行については、IDではない「<b>32</b><br />」以外は何もデータが入っていない為、 インポートする必要がありません。 もし可能であれば、csvファイルのA列(Accessテーブルでは数値型のIDというフィールド)が数値ではない場合、 その行のインポートをスキップするような処理がVBAで作成できるとよいのですが、可能でしたら教えてください。

  • CSVのデータ変換ツール

    こんなツールあるのか教えてください。 会社の取引先が多数に及び、その取引先単位で全く異なるCSVフォーマットでデータを送付してきます。毎回社内の統一化されたフォーマットへコピペで取り込んでいるのですが、あまりに非効率的なので便利なツールを探しています。 データは、取引先毎に列の並びが全く異なっていて、明細行が複数に分かれている場合もあり、統一性があまりないため取引先単位で読み込みルールを一度定義し、次回からはツールの使用のみで自動フォーマット変換ができることが望ましいです。Vectorでツールを探してみたのですが、複数行に渡るデータを変換できるツールや、列順を変更できるツールというのは見つかりませんでした。そんなツール存在しない、というのであれば自社で開発するしかないと思うのですが。。。

  • 【ACCESS】インポート定義を使わないCSVインポート

    ACCESS VBAにてMDBにSQL文でCSVデータをINSERTしようとしています。INSERT自体はうまくいったのですが、データの型をうまくそろえられません。2日程ネットサーフィンしているものの良いサンプルを見つけられません。有識者の方、ご存知でしたら是非教えてください! まず、CSVデータは以下のようなものです。 ===aaa.csv=== 00000001,2009/1/31 00000002,2009/1/31 ・ ・ A000001,2009/1/31 Z000002,2009/1/31 ========== これを 既存テーブル:aaa_TBLに取り込ませたく、以下のSQL文を書きました。 INSERT INTO aaa_TBL(カラム1,カラム2) SELECT FORMAT([aaa#CSV].F1,'0000000'),[aaa#CSV].F2 FROM aaa#csv IN 'C:\' 'Text;HDR=NO' これにて「0000001」と「000002」等のレコードは正常に取り込むことができましたが、「A000001」「B000002」等のデータは取り込まれず、NULLにて登録されておりました。 (aaa_TBL自体はカラム1=テキスト型、カラム2=日付型でCreateされております。) これを回避したく、いろんなサイトを訪問したのですが、ほとんどがインポート定義を使った方法を推奨しておりました。 しかしながら、私にはどうしてもインポート定義が理解できないんです! 「VBAにて○○.iniを作成する方法」などをよく見かけるんですが、できるだけ他の方法を検討したいと考えております。(今後、ACCESS VBAから他言語への乗り換えを考えているとか、他CSVにてインポートされるテーブルの数が30個程あるので、インポート定義ファイルの管理がつらいな・・・とか色々他にも理由はあるんですが・・・・) 何か良い方法はないでしょうか?! やはりインポート定義を作らないとだめでしょうか?! その場合、簡単なサンプルコードなどを頂けますと非常に助かります。。。(MSサイトのサンプルコードは理解できませんでした。。。) まだVBAを勉強し始めて2週間なので、色々突っ込みどころはあると思いますが、どうぞよろしくお願いしますm(_ _)m

  • ORACLE VARRAY型へCSVからインポート

    皆さまの知恵をお借りしたくご質問させて頂きます。 ORACLEのテーブルにVARRAY型を含むフィールドに SQLLOADERを使用してCSVからインポートを行っているところですが どうもインポートができません。 (「データ・ファイルのデータ型が正しくありません」と表示) VARRAYのタイプは、下記の様に設定していると思います。 TEST_VARRAY as VARRAY(100) of Varchar2(100) (TYPEのソースより) テキストファイルは、カンマ区切りのダブルクォーテーションで囲っております。 さらにVARRY内の区切りは、「','」を使用していると考えられます。 テキストファイル例) "NO","FIELD1_VARRAY" "001","TEST_VARRAY('00000.....','11111.....)" ※一度、テキストファイルに出力した内容となります。  訳があり別ORACLEにインポートしなくてはいけない状態になりました  (dmpは、ORACLE11gから9iに移行する為、使用できないと思います) 今は、試行錯誤しながら下記のコマンドを実行しております。 (NO, FIELD1_VARRAY VARRAY TERMINATED BY ’,’ ( FIELD1_VARRAY COLUMN OBJECT ( VARRAY CHAR(200) ) ) ) まだまだORACLEを始めたばかりで 型とかも全然分かっておりませんが 皆さまの知恵をお借りしたくご質問させて頂きました。 お忙しいところ恐れ入りますが よろしくお願い申し上げます。