- - PR -
VB.NETでエクスポート機能を付けたい
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-06-03 10:03
VB.NETとOracle9iで作業しています。
OracleテーブルにあるデータをVB.NETから CSV形式でエクスポートしたいのですが、その 方法が分かりません。SQL*Plusを使う方法など 調べたのですがイマイチよく分かりませんでした。 どなたかご存知の方がいらっしゃいましたら宜しくお願いいたします。 Selectでレコードを抽出し1つずつカンマをつけて テキストに書き出すというのは、やはり件数が多いと 処理時間の問題につながるのでしょうか・・・ | ||||
|
投稿日時: 2004-06-08 13:55
こんにちは。
フリーのOracleのエクスポーターを使用するというのは駄目なんでしょうか? EXCELへの出力用のアドイン等もありますし。 私は、ビジュアル&データチェックが必要のため、VB.Netで、一度グリットに SELECT表示してから、CSVに吐いてます。 EXCELに出力しないかぎり、処理時間はそう気にならないんじゃないでしょうか? 逆に件数が多いとき、プログレスバーとか併用すれば、体感的にいいと思われますが。 用途・使用者に応じて、というところでしょうか。 | ||||
|
投稿日時: 2004-06-08 14:33
何を調べて、どういう結果が得られ、それがどうわからなかったのでしょう? .NETを利用するなら、DataTableに取り込んで、カラム内のダブルクォーテーションをエスケープしてからダブルクォーテーションで囲み、カンマで区切って出力するだけ、だと思うのですが? ↑↑ 過程がわからない、ならこれで解決しますよね?過程はわかっているけど、どのメソッドを使えばよいのかわからない、ということ?それともダブルクォーテーションで囲まないからリターンコードやカンマの入ったデータで、データの区切りがゴチャゴチャになってしまったということ?それとも、ダブルクォーテーションをエスケープしなかったので、データとしてのダブルクォーテーションが消えてしまったとか? | ||||
|
投稿日時: 2004-06-09 10:15
ヤマザキさま、返答をありがとうございます。
Oracleのエクスポーターというものが あるのですね、早速調べてみたいと思います! 現在は1レコードずつ抽出し、カンマを付けてCSVに 保存しています。ヤマザキさまのグリッドからの 格納というのは、カンマを付けずにCSV形式に保存できるのでしょうか? SELECTし、DataGridに表示までは出来るのですが、その後の 処理を出来れば教えていただきたいです。 お忙しいところ申し訳ありません。 | ||||
|
投稿日時: 2004-06-09 11:01
Jittaさま、返答ありがとうございます。
>何を調べて、どういう結果が得られ、それがどうわからなかったのでしょう? 説明不足で申し訳ありません。 VB.NETとOracleを使ったエクスポートでは SQL*Plusを使う手法があるようなことが かかれていたので、SQL*LoaderのようにShell関数で 呼び出して処理する方法を調べていました。 VB.NETでどのようなメソッドを使えば実現できるのか 分からなかったのです。 もう少しじっくり調べてから明確に記述しなければいけませんね! 以後気をつけます。 Jittaさまのアドバイスも参考にさせていただきます。 また分からないことがあると思いますが、どうぞ宜しくお願いします。 | ||||
|
投稿日時: 2004-06-10 15:25
こんにちは。
Gridなどの配列からの処理は、データチェックとかも 必要となる場合も予想されるので、同じくカンマつけながらです。 ご存じかも知れませんが、 件数が多ければ、StringBuilder をお勧めします。 カラム数にも寄りますが、10000件程度でさえ、20倍程度差がでます。 Dim sb As New System.Text.StringBuilder For Rows = 0 To Grid行 - 1 For Cols = 0 To Grid列 - 1 sb.Append(GridText(Rows, Cols)) 'Check Or Convert.... sb.Append(",") Next sb.Append(vbCrLf) Next Dim sw As New StreamWriter(SaveFile, encShift_JIS) sw.Write(sb.ToString) sw.Close() SaveFile.Close() [ メッセージ編集済み 編集者: ヤマザキ 編集日時 2004-06-10 15:29 ] | ||||
|
投稿日時: 2004-06-10 15:42
これはこれでまあそうなのですが、今回のような(ファイルに書き出す)場合なら直接Writerの方に書き出す方がいいように思います。 まあ、別に特別件数が多くなければ問題はないわけですが。 何らかの理由でメモリ上で作ってしまう必要があるとか、一気にファイルに書き出してしまう必要があるとか、まあ何か理由があるのなら別ですが。 | ||||
|
投稿日時: 2004-06-10 16:17
こんにちは。
便乗になりますが、直接Writerへの方法というのは。。? カンマつける処理をやりながら、直接Writerに書き出すという方法があるのでしょうか? 以前 str += hogehoge で処理してたら20秒弱もかかってたので、上記方法にしたのですが、 もっと効率の良い方法があれば、私も知りたいです。 |