ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文

  メンテナンス 前画面に戻る

対象スレッド 件名: CSV 出力
名前: lightbox
処理選択
パスワード

件名 CSV 出力
名前 lightbox
コメント
@DIV
方法はいろいろありますが、Express Edition ならオリジナルの WEB インターフェイス
で普通に出力できます。
今度、エンタープライズ・マネージャで探してみますが、いずれにしても
エンタープライズ・マネージャは、通常敷居が高すぎるので、お勧めではありません。

一番簡単なのは、SQLPlus を利用する方法です。
@END


   [[SQLPlus で CSV 出力]]
@DIV
1) 列名リストを作成
@DIV
郵便番号,都道府県名,市区町村名,町域名
@END

2) エディタで "," を "||','||" に置換する
@DIV
郵便番号||','||都道府県名||','||市区町村名||','||町域名
@END

3) 以下のようなファイルを作成
   [[sample_01.sql]]
@DIV
SET LINESIZE 32767
SET PAGESIZE 0
SET TRIMSPOOL ON
SET FEEDBACK OFF
SET TERMOUT OFF
SPOOL 郵便番号マスタ.csv
select 郵便番号||','||都道府県名||','||市区町村名||','||町域名 from 郵便番号マスタ;
SPOOL OFF
EXIT
@END
※ SET PAGESIZE 0		: 書式設定情報をすべて非表示
※ SET TRIMSPOOL ON	: 各行の終わりの空白を削除
※ SET FEEDBACK OFF	: メッセージを表示しない
※ SET TERMOUT OFF	: 画面に表示しない

4) sqlplus の実行
@DIV
sqlplus LIGHTBOX/LIGHTBOX@//night/XE @sample_01
@END

http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19277-01/ch12.html#19786(コマンドリファレンス)
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19277-01/ch3.html#5458(コマンドライン)
@END


@DIV
当然、プログラムが書けるならば、もっと汎用性の高いものが作れますが、
ちょっと欲しいだけなら、VBScript(WSH) がおすすめ。
自分の環境と対象テーブルをエディタで書き換えて、エクスプローラからダブルクリックするだけです。
( 出力 SQL は高速な ||','|| 方式です )
@END


   [[oracle_csv.vbs]]
@DIV
' **********************************************************
' オブジェクト作成
' **********************************************************
Set Cn = CreateObject( "ADODB.Connection" )
Set Rs = CreateObject( "ADODB.Recordset" )
Set Fs = CreateObject( "Scripting.FileSystemObject" )

strDriver = "{Microsoft ODBC for Oracle}"
strServer = "@C:red(night/xe)"
strUser = "@C:red(lightbox)"
strPass = "@C:red(lightbox)"

strTable = "@C:red(郵便番号マスタ)"

ConnectionString = _
	"Provider=MSDASQL" & _
	";Driver=" & strDriver & _
	";Server=" & strServer & _
	";UID=" & strUser & _ 
	";PWD=" & strPass & _ 
	";" 

' **********************************************************
' 接続
' **********************************************************
on error resume next
Cn.Open ConnectionString
if Err.Number <> 0 then
	Wscript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

' **********************************************************
' 列情報取得
' **********************************************************
Query = "select * from USER_TAB_COLUMNS"
Query = Query & " where TABLE_NAME = '" & strTable & "'"
Query = Query & " order by COLUMN_ID"

on error resume next
Rs.Open Query, Cn
if Err.Number <> 0 then
	Cn.Close
	Wscript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

Query = "select "
CsvTitle = ""
Do While not Rs.EOF
	if CsvTitle <> "" then
		Query = Query & "||','||"
		CsvTitle = CsvTitle & ","
	end if
	Query = Query & Rs.Fields("COLUMN_NAME").Value
	CsvTitle = CsvTitle & Rs.Fields("COLUMN_NAME").Value
	Rs.MoveNext
Loop
Query = Query & " from " & strTable
Rs.Close

' **********************************************************
' データ取得用クエリー
' **********************************************************
on error resume next
Rs.Open Query, Cn
if Err.Number <> 0 then
	Cn.Close
	Wscript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

' **********************************************************
' 出力ファイルオープン
' **********************************************************
Set Csv = Fs.CreateTextFile( strTable & ".csv", True )

' **********************************************************
' タイトル出力
' **********************************************************
Csv.WriteLine CsvTitle

' **********************************************************
' データ出力
' **********************************************************
Do While not Rs.EOF
	Csv.WriteLine Rs.Fields(0).Value
	Rs.MoveNext
Loop

' **********************************************************
' ファイルクローズ
' **********************************************************
Csv.Close

' **********************************************************
' レコードセットクローズ
' **********************************************************
Rs.Close

' **********************************************************
' 接続解除
' **********************************************************
Cn.Close

' **********************************************************
' オブジェクト解放
' **********************************************************
Set Fs = Nothing
Set Rs = Nothing
Set Cn = Nothing

Wscript.Echo "処理が終了しました"
@END
↓OO4O を使用した単純な CSV 出力
http://winofsql.jp/VA003334/oracle051009005233.htm


↓Express Edition のWEBツール
http://lightbox.cocolog-nifty.com/photos/app/oracle_express_csvout.jpg