• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ファイルメーカーで1レコードを複数レコードに分割する方法(CSVファイルの1行を複数行に))

ファイルメーカーでCSVデータを複数レコードに分割する方法

このQ&Aのポイント
  • ファイルメーカーでCSVデータを複数レコードに分割する方法をご教示ください。
  • 現在、CSVファイル形式で受注データをダウンロードし、ファイルメーカーに取り込んでいるのですが、1レコードが1注文の状態になっています。
  • 1レコードを1品番単位に変換する方法を教えてください。手作業での変換を避けたいです。

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

  • ベストアンサー
noname#83007
noname#83007
回答No.3

●『Copalというスクリプト言語の統合環境を手にいれる』というのは、Copalというソフトをダウンロードして、AWKを使えるように設定するということです。 ■AWKの在り処 ベクターの以下の階層をお探し下さい。 ダウンロード > Windows > ユーティリティ > テキストファイル用 > AWK 現在、AWKは4つあります。 多分どれでも問題なく使えると思いますが、公開日が一番新しいということで、mawkをまず試されてはいかがでしょう。 ■Copal の在り処 ベクターの以下の階層をお探し下さい。 ダウンロード > Windows95/98/Me> ユーティリティ> テキストファイル用> Perl> Copal 2.75 が最新のようです。 詳細は、作者の方のホームページにあります。 それから、 ■AWK入門サイト http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/awk/intro/index.html 私は『MS-DOSテキストデータ料理学』という今は絶版された本でAWKを学びました。 もし古本屋等で見つけられたら購入されることをお勧めします。 ちなみに、今回の件 提示されたデータのスペース部分をカンマ(,)にしたものを使って、以下のスクリプトで処理しました。 上手く行きましたよ。 頑張ってAWKに挑戦してみて下さい。 -------------------------------------- BEGIN{ } {  split($0, work, ",");  for(i=3;i<32;i+=2){   if(work[i]!=""){    print work[1], work[2], work[i], work[i+1];   }  } } END{ } --------------------------------------

参考URL:
http://www.vector.co.jp/vpack/filearea/win/util/text/awk/
aisaika
質問者

お礼

早々のお返事と、大変丁寧なご教示、本当に有難うございます。早速、勉強してみます!! また上手くいきましたら、連絡させていただきます。 頑張ります! 本当に有難うございました♪(^ー^)ノ (かなり、ワクワクの私です♪♪♪)

aisaika
質問者

補足

何度も申し訳ございません。ただ今、AWKを勉強中です!! 『CopalでAWKを使えるように設定』し、教えて頂きましたスクリプトを、一度、実行してみようと思うのですが、元データー(csvファイル)の存在を、下記スクリプト内のどこに記述すれば宜しいでしょうか? 『AWK入門サイト』は一通り読んで見たのですが…\(_ _ ;) どうか宜しくお願い致します。 -------------------------------------- BEGIN{ } {  split($0, work, ",");  for(i=3;i<32;i+=2){   if(work[i]!=""){    print work[1], work[2], work[i], work[i+1];   }  } } END{ } --------------------------------------

すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#83007
noname#83007
回答No.2

こういうの好きです(^^;; 私だったら、 AWKというツールで、CSVの段階で「下記のように変換したい!!」と書かれたデータと同じものを作成してしまいます。 ベクターで AWKを検索してみて下さい。同時にCopalというスクリプト言語の統合環境を手にいれるととても快適です。 AWKでスクリプトを組むのが大変…な場合は、FileMakerでスクリプトを組む必要がありますね。 単純に考えると 品番1のフィールドにデータがあったら、レコードを複製しなさい。 品番2のフィールドにデータがあったら、レコードを複製しなさい。 これを、品番のフィールドのMAX値まで、繰り返します。 上記を繰り返している時に、注文番号の枝番をつけておきます。 注文番号 1-1 1-2 1-3 というように。 そして、枝番号が2だったら、品番2のデータを購入品番のフィールドにコピーする。もちろん個数も。 その一覧の作業が終わったら、次のレコードも同じようにします。 他にもいろいろ方法はあると思います。 がんばって下さい。

aisaika
質問者

お礼

お世話になります。AWKはかなり努力して見ましたが、私の頭では追いつかず、『FileMakerでスクリプトを組み』ました。 ●●成功です(*^_^*)!!! 有難うございます。 スクリプトの組み方の考え方を教えていただいていますので、こちらは、簡単に組むことが出来ました。 感謝の気持ちでいっぱいです。 あ~~本当に有難うございました。

aisaika
質問者

補足

お忙しい所、ご回答、本当に有難うございます。 半分、あきらめていましたところに、 素晴らしいご教示で、かなり、わくわくしております!!(笑) ただ、PCもあまり詳しくないもので、 もう少し、下記の点をご教示頂きたく、 お手数お掛け致しますが、どうか宜しくお願い致します。 ●ベクターで AWKを検索してみると、たくさん、  なんだか、出てくるのですが、具体的にどれを  使用するのがオススメでしょうか? ●『Copalというスクリプト言語の統合環境を  手にいれる』という意味が全く理解できません(汗)  (情けない私・・・)  もう少し、詳しく教えて下さい。 できるだけ、お勧めの「AWKというツールで、CSVの段階で「下記のように変換したい!!」と書かれたデータと同じものを作成してしまいます。 」で、 TRYしてみたいと思っています。 どうか、どうか、宜しくお願い致します。

すると、全ての回答が全文表示されます。
  • nbd00115
  • ベストアンサー率18% (116/632)
回答No.1

ファイルメーカー側で、最初の形式を受け付けるように する方がいいのではないですか?

aisaika
質問者

補足

お忙しい所、ご回答本当に有難うございます。 ファイルメーカーで、 【品番ごとの在庫管理】をしたいため、 【1レコード=1品番】でないと集計が不可能だと思います。 ●品番ごとの発注数 ●品番ごとの受注数 ●品番ごとの出荷数 ●品番ごとの「発注したけど未入荷」数 ●品番ごとの実在庫数 など・・・ 【1レコード=1注文番号】でCSVファイルを取り込み、 そこから、ファイルメーカー側で、【品番の数分のレコード】を自動で生成させることが出来れば、良いのですが・・・(>_<) もし、何かいい方法があれば、ぜひ、教えて下さい。 どうか、宜しくお願い致します。

すると、全ての回答が全文表示されます。

関連するQ&A