【 テーブルの扱い 】
コレクションの操作 |
テーブル一覧は、単純なコレクションの列挙です。いかし、後述の処理 と組み合わせれば効率的な管理が可能です
|
<SCRIPT language="VBScript">
' **********************************************************
' テーブル一覧
' **********************************************************
Function AllTable()
' オブジェクト作成
Set objServer = CreateObject("SQLDMO.SQLServer")
' 接続
Call objServer.Connect( "localhost", "sa", "" )
Set objDatabase = objServer.Databases("lightbox")
Set objTables = objDatabase.Tables
' 一覧作成
document.all("TableList").length = 0
For Each curTable in objTables
document.all("TableList").length = _
document.all("TableList").length + 1
if curTable.SystemObject then
document.all("TableList").options( _
document.all("TableList").length - 1 ).text = _
curTable.Name & " [system]"
else
document.all("TableList").options( _
document.all("TableList").length - 1 ).text = _
curTable.Name
end if
Next
' 切断
Call objServer.DisConnect()
Set objServer = Nothing
End Function
</SCRIPT>
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">
</HEAD>
<BODY id=Main>
テーブル一覧
<BR>
<SELECT name="TableList" size=12 style='width:400'></SELECT>
<BR>
<INPUT type=button value="一覧作成" onClick='Call AllTable()'>
</BODY></HTML>
CREATE TABLE 文 + α |
出力内容に、osql の GO コマンドも出力されるので、一括処理用として 利用する事もできます
|
<SCRIPT language="VBScript">
Const SQLDMOScript_AppendToFile = 256
Const SQLDMOScript_Drops = 1
Const SQLDMOScript_PrimaryObject = 4
' **********************************************************
' CREATE TABLE SQL 作成
' **********************************************************
Function DoScript()
' オブジェクト作成
Set objServer = CreateObject("SQLDMO.SQLServer")
' 接続
Call objServer.Connect( "localhost", "sa", "" )
Set objDatabase = objServer.Databases("lightbox")
Set objTable = objDatabase.Tables( "[商品マスタ]" )
' 作成
Flg = SQLDMOScript_Drops or SQLDMOScript_PrimaryObject
strText = objTable.Script( Flg, document.all("ScriptPath").value )
alert(strText)
' 切断
Call objServer.DisConnect()
Set objBackup = Nothing
Set objServer = Nothing
' SQLDMOScript_AppendToFile を指定すると、テキストファイルに追加されます
End Function
</SCRIPT>
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">
</HEAD>
<BODY id=Main>
スクリプトのパス
<INPUT type=text name="ScriptPath" size=80 value="D:\TEMP\商品マスタ.SQL">
<INPUT type=button value="SQL作成" onClick='Call DoScript()'>
</BODY></HTML>
出力結果は以下のようになります
if exists (select * from sysobjects where id = object_id(N'商品マスタ') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [商品マスタ]
GO
CREATE TABLE [商品マスタ] (
[コード] [varchar] (4) NOT NULL ,
[商品名] [varchar] (50) NULL ,
[単価] [int] NULL ,
PRIMARY KEY CLUSTERED
(
[コード]
) ON [PRIMARY]
)
GO
BulkCopy |
SQLServer ではおなじみの BCP ですが、スクリプトから実行ができます
|
<SCRIPT language="VBScript">
Const SQLDMODataFile_CommaDelimitedChar = 1
' **********************************************************
' CSV 出力
' **********************************************************
Function DoBcpExport()
' オブジェクト作成
Set objServer = CreateObject("SQLDMO.SQLServer")
Set objBcp = CreateObject("SQLDMO.BulkCopy")
' BCP パラメータセット
objBcp.DataFileType = SQLDMODataFile_CommaDelimitedChar
objBcp.DataFilePath = document.all("DataPath").value
' 接続
Call objServer.Connect( "localhost", "sa", "" )
Set objDatabase = objServer.Databases("lightbox")
Set objTable = objDatabase.Tables( "[商品マスタ]" )
' 作成
nRow = objTable.ExportData( objBcp )
' nRow = objTable.ImportData( objBcp )
alert( nRow )
' 切断
Call objServer.DisConnect()
Set objBackup = Nothing
Set objServer = Nothing
' ExportData の逆は ImportData です
End Function
</SCRIPT>
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">
</HEAD>
<BODY id=Main>
スクリプトのパス
<INPUT type=text name="DataPath" size=80 value="D:\TEMP\商品マスタ.CSV">
<INPUT type=button value="SQL作成" onClick='Call DoBcpExport()'>
</BODY></HTML>
DataFileType は以下のようになります
|
Constant Name |
Value |
1 |
SQLDMODataFile_CommaDelimitedChar |
1 |
2 |
SQLDMODataFile_NativeFormat
| 4 |
3 |
SQLDMODataFile_SpecialDelimitedChar
| 3 |
4 |
SQLDMODataFile_TabDelimitedChar
| 2 |
5 |
SQLDMODataFile_UseFormatFile
| 5 |
NativeFormat は、SQLServer 独自のバイナリフォーマットです
SpecialDelimitedChar は、ColumnDelimiter と RowDelimiter プロパティを適用する時に使用します
UseFormatFile は、フォーマットファイルを使用して詳細な定義情報を元に実行します ( フォーマットファイルは特定の構成を持つタブ区切りされたテキストファイルです )
フォーマットファイルについては、Books Online のキーワード、フォーマット ファイルで知る事ができます
|