2010年06月09日

VBScript:SQL Serverのテーブルをエクスポートする

VBScriptでSQL ServerのテーブルをCSVにエクスポートする。

CreateCSV "サーバー名", "データベース名", "テーブル名", "ファイル名"
WScript.Quit

Function CreateCSV(Byval Server, Byval DBName, Byval TableName, Byval FileName)
Dim fso, tf, cn, rs, Sql, s, fld, tmp
Set cn = CreateObject("ADODB.Connection")
cn.Open "provider=sqloledb;data source=" & Server & ";initial catalog=" & DBName & ";integrated security=sspi" 'Windows認証
Sql = "SELECT * FROM " & TableName
Set rs = cn.Execute(Sql)
If rs.Eof Then
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
Exit Function
End If
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.CreateTextFile(FileName, True)
s = ""
For Each fld in rs.Fields
s = s & ",""" & Replace(fld.Name, """", """""") & """"
Next
tf.WriteLine Mid(s, 2)
Do Until rs.Eof
s = ""
For Each fld in rs.Fields
If IsNull(fld.Value) Then
s = s & ","
ElseIf fld.Type = 202 or fld.Type = 203 Then
'改行コードがあるとちゃんと読み込めないことがある(多い)ので適当なコードに変換する
tmp = Replace(fld.Value, Chr(13) & Chr(10), Chr(9) & Chr(8))
tmp = Replace(tmp, Chr(13), Chr(9) & Chr(8))
tmp = Replace(tmp, Chr(10), Chr(9) & Chr(8))
s = s & ",""" & Replace(tmp, """", """""") & """"
ElseIf fld.Type = 135 Then
s = s & "," & FormatDT(fld.Value)
Else
s = s & "," & CStr(fld.Value)
End If
Next
tf.WriteLine Mid(s, 2)
rs.MoveNext
Loop
tf.Close
Set tf = Nothing
Set fso = Nothing
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Function

Function FormatDT(Byval DT)
FormatDT = Year(DT) & "/" & Right("0" & Month(DT), 2) & "/" & Right("0" & Day(DT), 2) & " " _
& Hour(DT) & ":" & Right("0" & Minute(DT), 2) & ":" & Right("0" & Second(DT), 2)
End Function


posted by 忘却の達人 at 21:32| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。