Re:SALOON & VBA

番外:VBScript版 Oracle⇒CSV

番外: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) & "に出力しました"

コメント一覧

frontflug
'---------------------------------------------------------------------
'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 & " ) 件、出力しました。"
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

※ブログ作成者から承認されるまでコメントは反映されません。

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最新の画像もっと見る

最近の「VBScript」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事