CSV加工の方法とアクセスへの取り込みについて

このQ&Aのポイント
  • CSVを加工してからアクセスに取り込むべきか、アクセス上で加工できるか教えてください。
  • 元のCSVでは商品番号、数量、サイズが1組のコンマの中に収められてしまっており、1レコードの商品数が限定できないため、一次加工が必要です。
  • アクセス内で解決する方法か、CSV上で一次加工するアドバイスをお願いします。
回答を見る
  • ベストアンサー

このCSVを加工してからアクセスに取り込むべきか、アクセス上で加工できるか教えてください

あるショッピングカートで出力されるCSVが下記のようになっており、 発送作業に使うために加工が必要と思っております。 【元のCSV】 受注日時、商品番号1数量1サイズ1商品番号2数量2サイズ2・・・、金額 2010/3/28 8:50,<>2S000001:5:::,6500 2010/3/29 9:52,<>1S000004:1::S:<>1S000002:3::L:,13700 2010/3/30 16:25,<>1S000003:1:::<>1S000002:3::L:<>2S000001:1:::,27700 【加工後のCSV】 受注日時、金額、商品番号1、数量1、サイズ1、商品番号2、数量2、サイズ2、・・・ 2010/3/28 8:50,6500,2S000001,5, 2010/3/29 9:52,13700,1S000004,1,S,1S000002,3,L 2010/3/30 16:25,27700,1S000003,1,,1S000002,3,L,2S000001,1, 元のCSVでは全ての商品番号、数量、サイズが1組のコンマの中に収められてしまっているのが問題なんです。 1レコードの商品数は、1回の買い物で何種類の商品を購入するか分からなく、 限度を決められないので、延々と増えてもいいように末尾に置くしかないかと。 本当は元のCSVをアクセスのテーブルにリンクさせ、クエリーで一発解決したいのですが、 無理であれば一旦CSVを正規表現で加工してから、アクセスに取り込もうかと思っています。 アクセス内で解決する方法か、CSV上で一次加工するアドバイスをお願いします。

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

  • ベストアンサー
  • shinkami
  • ベストアンサー率43% (179/411)
回答No.1

一旦CSVを正規表現で加工 でしょうね 情報量が多いようですが、これしかないと思います。 手作業になりますが エクセルを用いて 少しでも効率よく正規化する方法を提案します。 (もっとよい方法をお考えのこととは思いますが) <> がデータの区切と思います。 1.<> を 元のデータにない 文字(例えば @)と置き換えます ワード、メモ帳、ワードパット、テキストエディター のいずれでも 検索→置換え→全置換えで 2.このデータをテキスト形式で保存し、置き換えた文字を区切文字としてエクセルにインポートします。 データ→外部データの取込→テキストファイルのインポート と進みます 3.& を用いて新しいセルに セル同士を"," も入れて文字列連結します。 G1=$A1&","&,B1 H1=$A1&","&,C1 … 4.文字列連結したセル一つがアクセスの1レコード分となりますので、 新しいワークシートのA列にコピーアンドペーストします。 5.このA列全体をコピーして、新規のテキストファイルを開き貼り付けて 両端の "" を 除去します

ukichon
質問者

お礼

細かい手順まで教えて頂いてありがとうございます。 どうしても自動化をあきらめる際には利用させていただきます。

関連するQ&A

  • ショッピングカートから出力されるCSVの加工について

    あるショッピングカートのサーバから出力されるCSVを、 アクセスのテーブルにインポートして、クエリで加工したい相談です。 1つのフィールド内に <>1S000010:1:L::<>1S000007:10:::<>1S000009:2::S: のような形式で出力されているのですが、 この意味は、 「1S000010」という商品が「1」個で「L」サイズ、 「1S000007」という商品が「10」個、 「1S000009」という商品が「1」個で「S」サイズ、 という意味です。 これを見やすい形式に加工するために 商品1、数量1、サイズ1、商品2、数量2、サイズ2、商品3、数量3、サイズ3 の形にフィールドを分割したいのです。 頭から固定の文字数目以降を商品2、のように指定できると良いのですが、 数量が2ケタになるときもあるのでその方法が使えません。 このテキストのルールとしては、 ・「<>」の次から8文字が商品名 ・数量やサイズはコロン「:」で囲まれている です。 また、この例では商品3までありますが、同時に購入した商品の数だけ増えるので、 1種類のみの場合や、もしかしたら1度に10種類購入して、商品10まで増えるかもしれません。 あらかじめ想定した最大数の分だけ枠を用意しないといけないのかもしれませんが、それだけたくさん式を書かなければいけません。 あらかじめたくさんフィールドを用意した場合の数式、または もっと良い解決方法はないでしょうか? (説明が分かりづらかったらすみません。)

  • Accessのcsvエクスポートに関して

    Accessでのcsvエクスポートに関して、ご教授頂けましたら幸いです。 テーブルを基にした帳票形式のフォームがあります。チェックボックスにフラグが付い たデータのみcsvでエクスポートし、かつ、保存するファイル名をフィールドに値を使用 したいのですが、このような処理は可能でしょうか。 フォーム表示例: 商品コード 数量 チェックボックス A     10  チェックあり B     10  チェックなし この時、チェックありの商品コードAの情報のみをcsvでエクスポートし、かつ、ファイル名を「A.csv」としたい。あわせて、商品Bが対象となった場合は「B.csv」としたい。 お手数ですが、宜しくお願い致します。

  • CSVファイルを自動で加工したいのです

    お世話になります。データをダウンロードすると、添付ファイルの水色部分のようになります。 そのCSVファイルを元に、売り上げ明細(納品書)を作成する際、今までは、データをダウンロード後、エクセルに落とし、1行のデータにするために、 1.必要な項目列(添付ファイルの水色の部分)(型番2、商品名2、数量2、単価2、型番3、商品名3、数量3、単価3・・・・単価5)を挿入します。 2.水色の部分を挿入した項目列にコピー&ペーストします。 3.数量*単価を計算します。(単価の隣に列を挿入し計算し、その後、値でコピーしています) 4.アクセスに取り込み、納品書をプリンターします。 以上が簡単な手作業の手順です。 当方、BV,マクロ記述の知識はありません。 毎回のダウンロードは、同じ項目、順番です。 アクセスに取り組む際は、『1行』でないといけないという固定観念がありますが、 当方のスキルがもっとあれば、CSVファイルをアクセスに直接取り込める方法があるのでしょうか? できるだけ作業を減らしたいという考えからの、おもいつき程度のことです。しかしながら、元のCSVファイルは、1発注1行形式のデータ形式でないため、やはり無理なのか? とも思います。 作業1から3までを自動でできたら、どんなに効率が良いかと何度もトライしましたが、出来ずに ずっと悩んでおります。 どなたかの確かなスキル(BV記述例)、アドバイスをお願い致したく、投稿いたしました。 よろしくお願い致します。

  • Accessでのデータ加工方法を教えてください

    アクセス(Microsoft Access)で複数のデータから条件にあったデータを抽出する方法を知りたいです。 1:JANコード,原価 と並んだ20万件のテーブルと、 2:商品番号,JANコード,数量 (商品番号違いの同一JANコードがあり、JANコードなしの商品番号はありません。2のデータのJANコードはデータ1に必ずあります) と並んだ40万件のテーブルがあります 2のデータに1のデータからJANコードを基準にして、原価をもってきて 3:商品番号,JANコード,数量,原価 のデータを作成したいのですが、どのような手順で行えばいいのでしょうか? JANコードを軸にして1のデータから2のデータに当てはめていくのですが、 1のデータの「原価」は1点あたりの原価、 3のデータの「原価」は『1のデータの「原価」』×『2のデータの「数量」』の形にしたいと思っています。 アクセス初心者で説明が上手く出来ないのですが、この説明でわかった方いらっしゃいましたら、お願いいたします。

  • アクセス・ファイルメーカーを使っての枝番処理

    はじめまして。データベースソフトに外部CSVファイルを取り込んで伝票処理を行いたく思っています。 取り込むCSVファイルには 伝票番号 枝番 品名 数量 123456  1  ○○  2 123456  2  △△  5 123456  3  ■■  9 123457  1  ◎◎  3 123457  2  ※※  6 ~~~~~~~~~~~~~~ このような感じのCSVデータをデータベースソフトに取り込みたいのですが、一つのレコードに同一伝票番号のデータを多段にして枝番フィールド順に取り込む事は可能でしょうか? 伝票番号 123456 品名1  数量 単価 金額 品名2  数量 単価 金額 品名3  数量 単価 金額 品名4  数量 単価 金額 ~~~~~~~~~~~~ 品名10 数量 単価 金額 ------------------------- 合計      合計金額 こんな感じで表示されたいです。 お知恵を貸してください。

  • データベースの正規化について質問です><

    データベースの正規化について質問です><教えて下さい。 伝票を正規化していく問題なのですが、 受注番号 受注日 得意先コード 得意先名 得意先住所 {商品コード 商品名 販売単価 受注数量 受注金額} {}は繰り返しを表します。 これをまず自分で第一正規化してみて//*は主キーを表す。 *受注番号 受注日 得意先コード 得意先名 得意先住所 *商品コード 商品名 販売単価 受注数量 受注金額 になり次に第二正規化してみて *受注番号 受注日 得意先コード 得意先名 得意先住所 *商品コード 商品名 販売単価 *受注番号 *商品コード 受注数量 受注金額 になり最後に第三正規化をして *受注番号 受注日 得意先コード *得意先コード 得意先名 得意先住所 *商品コード 商品名 *商品名 販売単価 //ココです。 *受注番号 *商品コード 受注数量 受注金額 となったのですが模範解答には//ココです。の部分がなく、*商品コード 商品名 販売単価 これのままで終わっていました。 自分が間違えているのでしょうか??もし間違えているなら理由を教えて下さい。長くてすいません

  • access テーブルへのデータ入力について

    只今accessにて受発注のデータベースを作っておりますが、初心者でつまずいているため、ご教授ください。 商品テーブルに仕入単価が入っています。受注テーブルには仕入金額を入力する欄があります。普通なら、仕入単価と受注の数量をクエリで計算させて様々に加工、使用していくと思うのです。しかし、仕入単価は一応1年単位で決まっていますが、原材料の価格によって変動がある場合があります。 そこで、納品書の入手時点で仕入金額を入力しようと考えていますが、基本的には商品テーブルの単価使用したいので、フォームの仕入金額を入力する規定値に商品テーブルからの単価で計算させ、違った場合は手入力という形にしたいと思っています。 規定値に =[数量]*[単価](このフォーム自体のレコードソースが各テーブルをつなげた参照クエリです。) と設定しましたがname?エラーが返ってきています。 どうしたらいいでしょうか?この方法に限らず、単価変動がある場合の金額をどのようにすれば管理できるか案がありましたらお教えください。

  • オラクルのビューについて

    (顧客テーブル) 項目名 顧客コード、顧客名、顧客名カナ (商品テーブル) 項目名 商品コード、商品名、受注単価 (受注テーブル) 項目名 受注番号、顧客コード、受注年月日、納入予定年月日 (受注明細テーブル) 項目名 受注番号、商品コード、受注数量 を使って次のビューを作ります。 (商品別受注日計データ) 項目名  商品コード 商品名 受注単価 受注年月日 日計商品別受注数量  受注数量(受注明細テーブル)の合計 日計商品別受注金額  受注単価*日計商品別受注数量 このときに日計商品別受注金額を求めるには先に日計商品別受注数量を求めておかなければなりませんが、これを一つのSELECT文で行う事は可能でしょうか。 そのまま一つのSELECT文でやろうとするとGROUP BYでうまくいかないのですが、 やはり先に日計商品別受注数量を求めておかなければいけないのですか? どっちにしろやり方がわかりません。

  • ACCESS で おしえてください

    まずふたつのマスターがあります 受注マスター(商品CDはあるが仕入先CDはない、受注日、受注数、受注金額がある) 仕入先マスター(商品CDと仕入先CDがある) これらのマスターを使って仕入先別、商品別、週別(第1週から第4週)、の受注数、受注金額の集計表を導き出すACCESSの手法を教えてください。よろしくおねがいいたします。

  • エクセルかアクセスで作れますか?(受注リスト)

    受発注に関わる作業を行う事が有るのですが、 電話、FAX、メールなど色々な方法で受注を受けていますが、 フォーマットが決まっていないので、いつも自分で必要な情報を抜き出したり追加したりしています。 受注番号・商品管理番号・商品名・数量・注文者・発送先・支払方法・その他備考などなどが必要な情報です。 これを一つの注文は一つのファイル(詳細な内容のファイル受注番号で名前を付けてテキストファイルで保存) 注文の一覧表をエクセルで管理(受注残などのリストとして利用)しています。 テキストファイル「受注番号・商品管理番号・商品名・数量・・・」注文ごとに作成 エクセルファイル「受注番号・出荷日・備考・・・」 非常に煩雑でして、これをもっと効率良く出来ないかと思って、 エクセルかアクセスなどで注文用のデータを入力したらリストも作成されるようなもの または、データを入力して行くと勝手にデータベースになってる?ようなものを作りたいのです。 表紙のページにはリストが表示されて、リストをクリックすると詳細が表示されるようなもの イメージとしては年賀状ソフトの住所録みたいな感じ? 単に表として入力するのではなく、入力フォームなどが分かりやすくなっていると便利だと思います。 また、受注番号ごとに印刷できると良いです。 項目がリストとして印刷されるのではなく、印刷のレイアウトも決められたらいいです (左上に受注番号、ページ中央に商品番号、商品名、数量、下部に備考のような感じで) やりたい事の理想が大きすぎてもしかしたら、 自分で作るのでは不可能で、専用のソフトを買ったりプロじゃないと作れないのかもしれませんが きっかけとなるアイデアなど頂けたらいいなと思い質問します。 ヒントなどありましたら教えて下さい。

専門家に質問してみよう