番外:Java版 Oracle⇒CSVで
やったことを、VBSでやったらどうか・・・
と
いうことで、以下
文字コード等、まだ未考慮の部分は多いですが・・・
取り敢えず、やってみたということでご容赦下さい。
勿論、理解は浅く
ネットで検索して、寄せ集めです。
でも、これだけで、ORACLEテーブルをCSV出力できるのだから大したものです。
**********************************************************************
Dim oPara
Set oPara = WScript.Arguments
If oPara.Count < 1 then<br /> Wscript.Echo "パラメータが不足しています"
Wscript.Quit
End If
Dim cn
Dim fso
Dim rs
Dim csv
Dim sql
Dim i
Dim TextLine
Set cn = CreateObject("ADODB.Connection")
Set fso = CreateObject("Scripting.FileSystemObject")
Set rs = CreateObject("ADODB.Recordset")
Set csv = fso.CreateTextFile(oPara(0) & ".csv", True )
cn.Open(" Driver={Microsoft ODBC for Oracle};CONNECTSTRING=ORCL;UID=TESTUSER;PWD=TESTPWD;")
sql = "SELECT * FROM " & oPara(0) & " ORDER BY 1"
on error resume next
rs.Open sql,cn
if Err.Number <> 0 then
cn.Close
Wscript.Echo Err.Description
Wscript.Quit
end if
on error goto 0
TextLine = ""
For i = 0 to rs.Fields.Count - 1
TextLine = TextLine & rs.Fields(i).name & ","
Next
csv.WriteLine(TextLine)
Do While not rs.EOF
TextLine = ""
For i = 0 to rs.Fields.Count - 1
TextLine = TextLine & rs(i).value & ","
Next
csv.WriteLine(TextLine)
rs.MoveNext
Loop
csv.Close
rs.Close
cn.Close
Set fso = Nothing
Set rs = Nothing
Set cn = Nothing
Wscript.Echo oPara(0) & "に出力しました"
最新の画像[もっと見る]
-
Re:SALLON BBSの倉庫として 6ヶ月前
-
「決め・分け論64」欲求の4タイプ 1年前
-
Django で読書履歴管理システム(BOOKLOG) 1年前
-
Django で読書履歴管理システム(BOOKLOG) 1年前
-
Django で読書履歴管理システム(BOOKLOG) 1年前
-
Django で読書履歴管理システム(BOOKLOG) 1年前
-
Django で読書履歴管理システム(BOOKLOG) 1年前
-
Django で読書履歴管理システム(BOOKLOG) 1年前
-
Django で読書履歴管理システム(BOOKLOG) 1年前
-
Django で読書履歴管理システム(BOOKLOG) 1年前
'Oracle TableをCSVファイルに出力。OraOLEDB.Oracle接続 + UTF8 + TAB区切
'---------------------------------------------------------------------
Option Explicit
'On Error Resume Next
Dim oPara
Set oPara = WScript.Arguments
If oPara.Count < 1 then
Wscript.Echo "パラメータが不足しています"
Wscript.Quit
End If
'-----------------------------------
' オブジェクト定義
'-----------------------------------
Dim oraCon
Dim constr
Dim rs
Dim sql
Dim csv
Dim i
Dim j
Dim TextLine
Dim pInputTbl '入力TBL
Dim pOutputFile '出力ファイルパス
pInputTbl = oPara(0)
pOutputFile = "D:\TEST\file\out" & pInputTbl & ".dat"
Set oraCon = CreateObject("ADODB.Connection")
Set constr = CreateObject("ADODB.Command")
Set rs = CreateObject("ADODB.Recordset")
'tnsnames.ora ファイルのネットサービス名'
Const STRDATASOURCE = "TESTDB"
Const USERNAME = "TESTUSER" '接続するデータベースのユーザー名
Const PASSWORD = "TESTPWD" 'パスワード
constr = "Provider=OraOLEDB.Oracle"
constr = constr & ";Data Source=" & STRDATASOURCE
constr = constr & ";User ID=" & USERNAME
constr = constr & ";Password=" & PASSWORD
oraCon.ConnectionString = constr
oraCon.Open
sql = "SELECT * FROM " & pInputTbl & " ORDER BY 1,2"
rs.Open sql,oraCon
if Err.Number <> 0 then
oraCon.Close
Wscript.Echo Err.Description
Wscript.Quit
end if
Set csv = CreateObject("ADODB.Stream")
csv.Type = 2 '2:テキストファイル
csv.Charset = "UTF-8" '文字コード
csv.Open
TextLine = ""
'見出し行の出力
For i = 0 to rs.Fields.Count - 1
if i > 0 then
TextLine = TextLine & vbTab 'タブ区切り
end if
TextLine = TextLine & rs.Fields(i).name
Next
csv.WriteText TextLine, 1 '0 : 文字列のみ書き込み・1 : 文字列 + 改行を書き込み
'データ行の出力
j = 0
Do While not rs.EOF
TextLine = ""
For i = 0 to rs.Fields.Count - 1
if i > 0 then
TextLine = TextLine & vbTab 'タブ区切り
end if
TextLine = TextLine & rs(i).value
Next
j = j + 1
csv.WriteText TextLine, 1 '0 : 文字列のみ書き込み・1 : 文字列 + 改行を書き込み
rs.MoveNext
Loop
'書き出しファイルの保存
csv.SaveToFile pOutputFile, 2 '1 : 指定ファイルがなければ新規作成・2 : ファイルがある場合は上書き
csv.Close
rs.Close
oraCon.Close
'-----------------------------------
' オブジェクト開放
'-----------------------------------
Set rs = Nothing
Set oraCon = Nothing
Wscript.Echo pOutputFile & " を ( " & j & " ) 件、出力しました。"