Works > 逆引きSQL比較 > MSSQL > その他
MSSQL
[ SQL ]
[ データベースの情報 ]
[ 手続き型言語 ]
[ その他 ]
■その他
SQL文を書いたファイルをバッチで実行するには? ▲TOP
ORACLE MSSQL SSA
hoge.sqlの実行結果をhoge.txtにログとして出力する処理をコマンドプロンプトから実行します。
hoge.sql
select getdate()
>isql -U sa -P -ihoge.sql -ohoge.txt
※MSDEの場合は isql ではなく osql になります
CSVファイルをインポートするには? ▲TOP
ORACLE MSSQL SSA
CSV形式のkemp.txtを読み込み、社員マスタKEMPにインポートします。
以下のようなフォーマットファイル kemp.fmt を準備します。
kemp.fmtの内容
7.0
4
1 SQLCHAR 0 4 "," 1 empno
2 SQLCHAR 0 40 "," 2 empnm
3 SQLCHAR 0 20 "," 3 job
4 SQLCHAR 0 4 "\r\n" 4 deptno
BCP を使用してデータをインポートします。
>bcp kemp in kemp.txt -P -Usa -fkemp.fmt -okemp.log
CSVファイルにエクスポートするには? ▲TOP
ORACLE MSSQL SSA
社員マスタKEMPをCSV形式のkemp.txtにエクスポートします。
以下のようなフォーマットファイル kemp.fmt を準備します。
kemp.fmt
7.0
4
1 SQLCHAR 0 4 "," 1 empno
2 SQLCHAR 0 40 "," 2 empnm
3 SQLCHAR 0 20 "," 3 job
4 SQLCHAR 0 4 "\r\n" 4 deptno
BCP を使用してデータをエクスポートします。
>bcp kemp out kemp.txt -P -Usa -fkemp.fmt -okemp.log
バッチでエラーをハンドリングするには? ▲TOP
ORACLE MSSQL
どちらかと言うと、DOSのコマンドレベルの話ですが。
hoge.sqlの結果を受け、呼び出し側のバッチ処理でエラーをハンドリングします。
(WindowsOSの場合)
hoge.sql
--raiseで落としてみる
raiserror ('エラーです', 16, 1)
go
--または、MSSQLでエラーになる構文を実行してみる
--select sysdate from dual;
hoge.bat
@echo off
REM -bスイッチを指定するとエラー時、errorlevel変数に値が入る
isql -U sa -P -ihoge.sql -b
set myerror=%errorlevel%
echo;
echo;
if not %myerror% == 0 (
REM エラー処理
echo バッチ処理でエラーが発生しました:%myerror%
) else (
echo バッチ処理が完了しました
)
>hoge
を実行する。
※MSDEの場合は isql ではなく osql になります
ログインダイアログなしで接続するには? ▲TOP
ORACLE MSSQL SSA
接続時に、ログインダイアログを出さない方法です。
言うまでもありませんが『そのマシン自体にパスワードを残す』と言う点に留意する必要があります。
osql であれ、isql であれ、isqlw(クエリアナライザ)であれ、この場合の引数は同じです。
クエリアナライザについては、ショートカットのプロパティのリンク先を
"[パス]isqlw.exe" -U sa -P
のようにすれば、ダイアログを出さずに接続する事ができます。
特定のディレクトリのスクリプトを実行できるようにするには? ▲TOP
ORACLE MSSQL SSA
これもどちらかと言うと、WindowsOSの使い方の話ではあります。
単純に、isqlのショートカットのプロパティの作業フォルダのパスを、任意のディレクトリにしておけばOK。
osql, isql の場合、あらかじめディレクトリを移動しておく以外に、-D スイッチを使う事もできます。
>osql -U sa -P -d misc -D C:\sqlscripts\
※このスイッチは大文字/小文字を判断します。
外部のデータベースに接続するには?(異機種間接続) ▲TOP
ORACLE MSSQL
他の外部データベースに接続する方法
他のRDBMSをリンクサーバーを介してマッピングする事ができます。
use master
go
--リンク サーバーを削除
sp_dropserver 'OrclDB', 'droplogins'
go
--リンク サーバーを作成
sp_addlinkedserver 'OrclDB', 'Oracle', 'MSDAORA', '<ORACLEの接続文字列>'
go
--SQL Server ログインから Oracle ログインへのログイン マッピング
sp_addlinkedsrvlogin 'OrclDB', false, 'sa', '<oracle_uid>', '<oracle_pwd>'
go
use misc
go
--openqueryを使用してORACLEのテーブルにアクセス
SELECT * FROM openquery(OrclDB, 'select * from "kemp"')
※マニュアルでは、上記のSQLであれば "select * from OrclDB..misc.kemp"
のように検索が可能のはずですが、私の環境ではエラーになりました。
これは既知の現象で、パッチを当てるか、上記のようにopenqueryを使う必要があります。
マイクロソフト サポート技術情報 - JP294459
http://support.microsoft.com/default.aspx?scid=kb;ja;JP294459
このページの先頭へ
MSSQL
[ SQL ]
[ データベースの情報 ]
[ 手続き型言語 ]
[ その他 ]
Works > 逆引きSQL比較 > MSSQL > その他