- - PR -
batファイルからのDBアクセスについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-08-07 14:30
皆さんの意見だと、
WSHでSQLServerのデータをcsv出力しとストアドプロシージャでOracleテーブルへInsertすることが可能なのかと思います。 Oracleへの取り込みはストアードで可能かとは思いますが、SQLServerのデータをcsvへ出力したりすることはWSHで可能でしょうか? 他にcsv出力のいい案がありますでしょうか? | ||||
|
投稿日時: 2008-08-07 14:46
csvを吐き出すのが目的なのか、日々のDB間のデータ移行が目的なのか、最終的にやりたいことがいまいちわかりませんが、csvを吐き出すだけならTransactSQLで記述してやるとかAccessでリンクしてやるとか手はありますね。
(ひょっとしてDB間移行が目標だけどcsvも別のシステムで使うとか?) | ||||
|
投稿日時: 2008-08-07 14:56
bcp ユーティリティとか。 確かに何が最終的な目的なのか分からないのであれですが、WSH が使えるならプログラミングしてしまった方が早いと思ってしまったり(^_^;) Access があるなら Access で組んでしまうとか。 | ||||
|
投稿日時: 2008-08-07 15:37
<SQL>
osql -S server -U login -P password -d database -s"," -Q"select * from [user].[table]" -o output.txt -h-1 ⇒この処理ですがバッチから呼び出すことは 可能でしょうか。 SQLServerより、Select結果をcsvへ出力したいんですが。 | ||||
|
投稿日時: 2008-08-07 15:48
実行できるかどうかは環境によりけりです。 実行したいコマンドをコマンドプロンプトで実行して結果が得られれば(普通は)バッチでも実行できます。 バッチとコマンドの関係は当然理解されてますよね? | ||||
|
投稿日時: 2008-08-07 16:00
DTSパッケージを使うのがよいと思いますが。 | ||||
|
投稿日時: 2008-08-07 21:38
SQL Server はさわったことないので Oracle のみですが。
CSV で取り出したものをデータベースに格納するのみであれば、Oracle の用意している SQL Loader で入れた方が早いかと。 単なる追記でなく値によっては既存の行を更新するような処理が必要であるとしたら、単に SQL Loader で放り込むだけじゃなくて PL/SQL とかも必要になるでしょうけど。 Oracle のバージョンが不明ですが、9i 以降なら CSV のまま外部表として扱うという方法もあります。基本的に読み取り専用ですが。 | ||||
|
投稿日時: 2008-08-08 09:30
SQLServerのマシンからオラクルサーバへリンクするのはどうでしょう。
SQLServerのリンクサーバ機能を使うと、OLEDBプロバイダを通してOracleのデータベースをあたかもSQLServer上にあるかのように使うことができます。 この方法を使うと、CSVファイルを作ることなく、直接オラクル上にデータを送ることができます。 http://msdn.microsoft.com/ja-jp/library/ms188279.aspx なぜ、「Windows用のbatファイル」から処理しないといけないのでしょうか? タスクを使いたいというのであってもWSHでできるし、MS-DOSのBATファイルからOSQLやSQLPLUSを呼び出すことでストアドを実行できます。 SQLServerのJOBを使ってタスクと同じように指定時間にストアドを実行させることもできます。JOBから外部アプリを起動することもできます。BATからでもできますね。 目的と方法を取り違えているように思えます。 |