• ベストアンサー

PL/pgSQLを使用してデータ移行がしたい。

Ver8.3.3 現行のテーブルの値を、別テーブルへ移行したいのですが、 コーディングのしかたが良く解りません。 ex) Aテーブル ID  ビット合計1 ビット合計2 Bテーブル ID  ビット合計データ種別 ビット合計 1レコードの物を、2レコードに変換する具合です。 サンプル等が記載されているサイト等を教えて頂ければ幸いです。 宜しくお願い致します。

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

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

テーブルAとBは、同じサーバにあるのでしょうか? CSVファイルなどの媒介は、必要ないのでしょうか? データ件数は、どのくらいあるのでしょう? insert ~ selectの1文で可能なのですが、ストアドプロシジャでやりたいでしょうか? データ件数が多量の場合、select文で条件検索し、何回かに分割して行うこともできます。 insert into B select id,1,bsum1 from A union select id,2,bsum2 from A

JACK_TOSHI
質問者

お礼

chukenkenkouさん、レス有難う御座います。

JACK_TOSHI
質問者

補足

ストアドプロシジャを使用しないと出来ないと思っていました。 1文で可能なら言うこと無いです。 2つのテーブルは、同一サーバにあります。 CSVファイルの媒介は不要です。 レコード数は、約5万レコードです。 実際は、1レコードを5分割します。

その他の回答 (2)

回答No.2

具体的なアドバイスが欲しいなら、具体的な質問にしましょう。 Aテーブルでは、ID列でユニークになるのですか? Bテーブルでは、同じID列値を持つ行ができる訳ですよね? 「ID」列と「ビット合計データ種別」で、ユニークになるのですか? 「ビット合計データ種別」には、「ビット合計1」か「ビット合計2」かを識別する値が入るのですよね?アドバイスする側で推測しろっていうのは乱暴で、無駄なやり取りをしてしまうこともあります。

JACK_TOSHI
質問者

補足

早々のレス有難う御座います。 >アドバイスする側で推測しろっていうのは・・・ そういうつもりではなかったのですが、説明不足でした。 ID列は、ユニークキーです。 ID列 + ビット合計データ種別で、ユニークです。 単純に1レコードの物を、2レコードに分割したいのです。 COBOL、PL/1、RPG、VB、C、JAVA、ABAP4等にて分割しても良いのですが、SQLのプロシージャ言語を用いて分割したいのです。

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1
JACK_TOSHI
質問者

お礼

nora1962さん、早々のレス有難う御座いました。

関連するQ&A

  • PL/pgSQLについて

    お世話になっております。 PL/pgSQLでPostgreSQLのあるテーブルにinsertがかかったら、別のテーブルをtriggerを使ってupdateする構文を書いていますが、上手くいきません。 insertを実行すると、変数が割り当てられていない旨が表示されます。 サンプルは以下の通り DROP FUNCTION k_trig(); CREATE FUNCTION k_trig() RETURNS OPAQUE AS' DECLARE ov1 RECORD; ov2 RECORD; BEGIN SELECT * FROM 個別集計 INTO ov1 WHERE id = new.id; UPDATE 個別集計 SET a1 = ov1.a1 + new.a1, a2 = ov1.a2 + new.a2, a3 = ov1.c + new.a3 WHERE id = new.id; *****以下省略 insert実行 ↓ 「record ov1 is unassigned yet」と表示されます。 declareで宣言しているのですが・・・ 何が原因か教えてください

  • PL/pgSQLにて日付変換ファンクションプロシージャー作成

    ファンクションを用いて、Ver7.4.7のDBテーブルの更新日時の変換を、行いたいのですが? 値は、javaにてセットされた秒数を、yyyy-mm-ddの日付型へ変換したいのですが、可能でしょうか? 現在ググッて、検索していますが、探し出せておりません。 ご教授頂ければ、幸いです。宜しくお願い致します。

  • SQLのmaxで求めた値を変数に代入する

    ex) select max(id) from table でかえってくる値を変数に代入するにはどのようにコーディングすればよいのでしょうか? ExcelVBAを使っています。

  • ファイルメーカー8 データ加工後、別テーブルのフィールドへ移行

    こんにちは!! スクリプトにより、 フィールドのデータを、別テーブルのフィールドへ、 加工してから移行する時、どのようにやっていますか? たとえば、 テーブル1、テーブル2とあります。 テーブル1にはIDフィールド、テーブル2にはお客様番号フィールド。 移行したいレコードを、チェックボックスにより選択させ、 スクリプトを実行したとき、 選択されたレコードに対し テーブル1のIDフィールドを元に、 "hoge"を文頭に追加してから、テーブル2のお客様番号フィールドに 入力。 1レコード終わったら、次のレコード。 試しに1つ作ってみました。 移行元フィールドのデータをコピーし、移行先フィールドに移動、 貼り付け。 まだ、複数レコードがあっても、1フィールドだけなので 大丈夫ですが、 こういう処理をしたいフィールドは30以上あります。 もっと良いスクリプトの書き方は、ないでしょうか? なぜこのような事がしたいかと言いますと、 多店舗あるネットショップの顧客情報などを管理したいと思ってます。 それぞれのネットショップでは、顧客情報や商品情報などを 独自のフィールドでCSVとして吐き出します。 各店舗用テーブルへCSVを取り込み、 それぞれのスクリプトにより、 加工しながら、一括管理テーブルへと移行させたいのです。 説明が下手で申し訳ありませんが、何卒よろしくお願いいたします。

  • mysqlテーブルから一つレコードを取得して変数に

    mysqlテーブルから一つレコードを取得して変数に はじめまして。仕事上必要で独学で勉強を始めましたが、行き詰ってしまったので教えてください。 mysql+phpにて以下のテーブル(tbl_ex)で、phpから、'test'のレコードを足がかりに、idの'001'を返して変数に代入する方法がわかりません。 tbl_ex +-------+-----------+ | id | account | +-------+-----------+ | 001 | test | +-------+-----------+ | 002 | sample | +-------+-----------+ accountのtestからidを抜き出すのに SELECT id FROM tbl_ex WHERE account = 'test'; という具合にやったのですが、それからどうidを変数にするのかわからず、 元から違っていて別の方法があるのかと疑問です。 結果、$id='001' というようにしたいです。 凡庸な質問なのかもしれませんが、ご教授お願い致します。

    • ベストアンサー
    • PHP
  • 数件単位の集計のSQLについて

    数件単位で合計した集計をしたいのですが、良い案が思い浮かびません。 例えば、100件のレコードがあった場合、ID.1~10までの合計、 ID.11~20までの合計、・・ID.91~100までの合計といった感じです。 ○集計対象のテーブル ID  値 ---------------------------- 1  10,000 2  9,000 3  8,000 : 99  100 100  10 ○集計結果イメージ ID        値 ---------------------------- (1~10の合計値)   50,000 (11~20の合計値)   25,000  : (91~100の合計値)  5,000 以上、宜しくお願い致します。

  • アクセスで計算

    アクセルでレポートを作成しています。 そのレポートのはテーブル1をレコードソースにしています。 レポート上で、IDごとに、合計金額を出しています。その金額に一定の値を掛けたいと思います。 例えば、そのIDごとの合計金額に、 「1000000/全部のIDの合計金額」を掛けた値を「総合計」として示したいと思います。 その1000000は別のフォームで入力すると、一覧で見たときに、全てのIDにその値「1000000/全部のIDの合計金額」が掛けられてるようにしたいのです。1000000を200000に変更したときは、そのフォームに入力すると、全てのIDごとに「合計額*2000000/全部のIDの合計金額」を表示させるようにしたいと思いますが、そういったことは可能でしょうか? なんだか説明がわかりにくくてすみません(>_<) 宜しくお願いいたします。

  • 外部結合?

    SQLについてです。 テーブルA ID 価格 タイプ 01 1,000 A01 02 2,000 B02 テーブルB ID 名前 種別 01 test a 03 aiue b 上記のようなテーブルがあったとして テーブルAとテーブルBを外部結合し 紐づくレコードがあった場合、さらに 種別=a で検索を行いたいのですが 書き方がよくわかりません。 外部結合で検索し、紐づくレコードがあった場合に さらに検索条件を絞る場合には どう書いたらいいのですか? よろしくお願いします。

  • 複数のテーブルから値を合計出力するSQLについて

    複数のテーブルから値を合計出力するSQLについて 以下の様な3つのテーブルがあり、それぞれのテーブルから値を合計した結果を取得したいと思っております。 この場合のSQL文をご教授いただけないでしょうか? 拙い説明でお分かりに難いかと思いますが、何卒、宜しくお願いします。 ●テーブル t1(テーブル1) id, 会員ID, 日付, 金額 t2(テーブル2) id, 会員ID, 日付, 金額 t3(テーブル3) id, 会員ID, 日付, 金額 ●期待する結果 上記、テーブル内の会員ID、日付が同じものの金額を合計して取得。(1行で出力) いずれかのテーブルに「会員ID」が一つしか存在しない場合も、「日付」、「金額」を取得して「合計金額」に反映。 もし、各テーブル、レコードの「金額」が「0」または「null」の場合は「0」として処理する。 ●期待出力結果イメージ 会員ID | 日付 | 合計金額 | -------------------------------- m001 | 2011/07/20 | 1500 | -------------------------------- m001 | 2011/06/10 | 2000 | -------------------------------- m002 | 2011/06/05 | 1000 | -------------------------------- m003 | 2011/05/25 | 0 | -------------------------------- m001 | 2011/03/05 | 3000 | ※「合計金額」は、「t1(テーブル1)」~「t3(テーブル3)」の中に含まれていた金額の合計。

    • ベストアンサー
    • MySQL
  • 2つのサブフォーム間でデータの連携

    今、ある単票フォームに、2つのサブフォームを配置し、そのサブフォーム間で金額の連携をしたいと考えています。 【親フォームA】 ・ID1、長整数型(主きー) ・受付日時 ・発注金額総合計 <== ※Bが更新されたら、ここを更新したい 【サブフォームB】 ・ID2、長整数型(主キー) ・ID1(外部キー) ・発注日 ・発注合計金額 <=== ※Cが更新されたら、ここを更新したい ==> Aの更新へ↑ 【サブフォームC】 ・ID3、長整数型(主キー) ・ID2(外部キー) ・発注項目名 ・単価 ・数量 ==>ここを更新する→Bへ↑ ・単位 ==>ここを行進する→Bへ↑ ・摘要 サブフォームB、Cは、いずれも帳票型です。 それぞれ、テーブルA, B, Cがレコードソースで テーブル構成は、上の項目の構成と同じです。 A-ID1: B-ID1 = 1:多 B-ID2: C-ID2 = 1:多 この時、Cで単価と数量を入力したら、Bの発注合計金額の値を更新したいです。 それと同時に、親Form Aの「発注金額総合計」の値を、Bの全てのレコードの「発注合計金額」のSumで更新したいです。 よろしくお願いします。