- PR -

batファイルからのDBアクセスについて

投稿者投稿内容
未記入
会議室デビュー日: 2008/08/07
投稿数: 12
投稿日時: 2008-08-07 14:30
皆さんの意見だと、
WSHでSQLServerのデータをcsv出力しとストアドプロシージャでOracleテーブルへInsertすることが可能なのかと思います。

Oracleへの取り込みはストアードで可能かとは思いますが、SQLServerのデータをcsvへ出力したりすることはWSHで可能でしょうか?
他にcsv出力のいい案がありますでしょうか?
johnes
ベテラン
会議室デビュー日: 2007/11/21
投稿数: 50
投稿日時: 2008-08-07 14:46
csvを吐き出すのが目的なのか、日々のDB間のデータ移行が目的なのか、最終的にやりたいことがいまいちわかりませんが、csvを吐き出すだけならTransactSQLで記述してやるとかAccessでリンクしてやるとか手はありますね。

(ひょっとしてDB間移行が目標だけどcsvも別のシステムで使うとか?)
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2008-08-07 14:56
引用:

未記入さんの書き込み (2008-08-07 14:30) より:

他にcsv出力のいい案がありますでしょうか?


bcp ユーティリティとか。

確かに何が最終的な目的なのか分からないのであれですが、WSH が使えるならプログラミングしてしまった方が早いと思ってしまったり(^_^;)
Access があるなら Access で組んでしまうとか。
未記入
会議室デビュー日: 2008/08/07
投稿数: 12
投稿日時: 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へ出力したいんですが。
johnes
ベテラン
会議室デビュー日: 2007/11/21
投稿数: 50
投稿日時: 2008-08-07 15:48
引用:
未記入さんの書き込み (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へ出力したいんですが。


実行できるかどうかは環境によりけりです。
実行したいコマンドをコマンドプロンプトで実行して結果が得られれば(普通は)バッチでも実行できます。
バッチとコマンドの関係は当然理解されてますよね?
カーニー
ぬし
会議室デビュー日: 2003/09/04
投稿数: 358
お住まい・勤務地: 東京
投稿日時: 2008-08-07 16:00
引用:

未記入さんの書き込み (2008-08-07 13:59) より:
実施したい処理は、日々SQLServerよりあるデータを取得して(csv?)、Oracleのあるテーブルへ更新したい(PL/SQL?)と考えております。


DTSパッケージを使うのがよいと思いますが。
ほったて
ベテラン
会議室デビュー日: 2007/11/10
投稿数: 68
投稿日時: 2008-08-07 21:38
SQL Server はさわったことないので Oracle のみですが。
CSV で取り出したものをデータベースに格納するのみであれば、Oracle の用意している SQL Loader で入れた方が早いかと。
単なる追記でなく値によっては既存の行を更新するような処理が必要であるとしたら、単に SQL Loader で放り込むだけじゃなくて PL/SQL とかも必要になるでしょうけど。

Oracle のバージョンが不明ですが、9i 以降なら CSV のまま外部表として扱うという方法もあります。基本的に読み取り専用ですが。
ふるふる
会議室デビュー日: 2008/02/05
投稿数: 19
投稿日時: 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からでもできますね。

目的と方法を取り違えているように思えます。

スキルアップ/キャリアアップ(JOB@IT)