- - PR -
一時テーブルについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-01-17 15:03
はじめまして。
C#初心者です。 SQLサーバを使用し、 テーブルからデータを取得し@、そのデータをもとに、 SUMしたり、別テーブルのデータと結合したりして 新規のデータAを作らなければいけません。 データ件数は最初に取得した@時点で30万件以上あり、 そのほとんどが次に加工したり、結合したりするAに使用されます。 加工したりするのでデータセットは使用できません。 @のデータも、Aのデータも別に使用するのですが、 こういった場合、何を使用すればよろしいのでしょうか。 現在、考えている方法は、SQLサーバの一時テーブルを使用するという 方法ですが、それ以外によい方法がありましたらご教示願えないでしょうか。 | ||||
|
投稿日時: 2005-01-17 15:59
はじめまして,さかもとと申します。
具体的な加工内容等が分かっているわけではないのですが, 30万件くらいのデータを元に一括で加工(テーブル作成とか) をするのであればストアドプロシージャ内で一時テーブルを作成 して利用するのが楽なのではないかと思うのですが,如何でしょうか? (私自身も初心者レベルなので相乗り質問に近いのですが・・・) | ||||
|
投稿日時: 2005-01-17 16:10
やはり、ストアドでしょう _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-01-17 22:29
なぜDataSetは使えないのでしょう?DataSetを加工できますよ。また、そこから別のテーブルの新規行にすることも可能です。要はやり方次第です。
確かに1つのDataAdapterにInsertCommand, DeleteCommand, UpdateCommand, SelectCommandを構成して、Updateメソッドを実行するような使い方は出来ません。だからといってDataSetが使えないわけではありません。『加工したりするのでデータセットは使用できません』というより、メモリ的に使用しない方が良さそうですけど。 加工の仕様が不明ですが、加工が1行単位に完了するなら、DataReaderを使って1行ずつ処理するという方法もあります。もっとも、DBとのラウンドトリップ回数を考えると、ストアドプロシージャにする方がよいのですが。 _________________ | ||||
|
投稿日時: 2005-01-18 09:53
みなさん、ご返答ありがとうございました。
やはり、ストアドプロシージャを使うのが一番良いようですね。 追加で質問させていただきたいのですが、 今回は、C#.netと、SQLServerを使用するのですが、 ストアドをSQLServerではなく、C#のコーディングに埋め込むことは 可能なのでしょうか。SQLServerから取得したデータを一時テーブルに 取り込んで、クラス間で使いまわしたいと考えています。 どうぞよろしくお願いいたします。 | ||||
|
投稿日時: 2005-01-18 21:25
C#のコード中にストアドプロシージャを埋め込むって、具体的にどのようなことですか?ストアドプロシージャがどういうもので、どう使うかを理解していますか?C#のコンパイラには、C#の文法しか理解できません。 「SQL Serverから取得したデータ」というのは、取得したのは誰でしょう?私の理解では一時テーブルというのはSQL Server上にあるのですが、そこに取り込む?取得して取り込むとは、どういうことでしょう?放り込むじゃなくて? テーブル1のデータを加工してテーブル2を生成する処理をストアドプロシージャで行うなら、クラス間で使い回したいデータというのはテーブル1ですか?テーブル2ですか?それとも、加工途中のデータですか? ここを読んでいる人はあなたを知らない、と言うことを意識して書いてください。あなたの中では「常識」であっても、他の人にはそうでない場合が多々あります。「説明するのが面倒」とか、「わかるだろう」とか思わず、そうですね、あなたの両親に説明するつもりで書いてください。可能なら、投稿前に実際に投稿文そのままで説明して、「何が聞きたいかわかった?」と尋ねてみてください。職場の同僚でもいいですが、その場合は作業の状況を知らない人の方がいいです。ここを読んでいる人は、たいてい同じ職種でしょうから、好意的に解釈し、暗黙で補完しますが、それにしてもわかりにくいです。そして、結局「面倒」とか「わかるだろう」と思って端折ったところで余計に「面倒」なことが起きます。またはこういう風に質問を重ねられて時間だけが過ぎていくか。これはあなたにとって好ましい状況とは言えないと思いますが、どうでしょうか。 時間があれば他の人の質問もいくつか読んでみてください。あなたがわからないと思ったことは、たいてい他の人も「これはどういう意味ですか」と聞いているはずです。 _________________ |
1