SQL获取表结构的show_table.vbs (冰点极限NP)
2016-07-07来源:

SQL获取表结构的show_table.vbs,用vbs实现查看sql数据库的表结构的代码。需要传入用户名密码与数据库名称,具体的看程序帮助。

代码如下:

set arg=wscript.arguments

If arg.count = 0 Then

show_help()

wsh.quit

End If

Server = arg(0)

User = arg(1)

pass = arg(2)

database_name = arg(3)

table_name = arg(4)

set Conn = CreateObject("ADODB.Connection")

Conn.Open "Driver={SQL Server};Server=" & Server & ";UID=" & User & ";PWD=" & Pass & ";Database=" & database_name

Set rs = conn.execute("select count(*) as n from " & database_name & ".dbo.sysobjects where id = object_id(N'[dbo].[" & table_name & "]')")

if rs("n") <=0 Then

wsh.echo "table have???"

wsh.quit

End If

sql1="use " &database_name & ";select count(column_name) from information_schema.columns where table_name='" & table_name & "'"

set rs1=conn.execute(sql1)

num = rs1(0)

rs1.close

Set rs1 = Nothing

i = 1

sql2="use " &database_name & ";select column_name,data_type,IS_NULLABLE,character_octet_length,collation_name,domain_name from information_schema.columns where table_name='" & table_name & "' order by ordinal_position"

'wsh.echo sql2

set rs2=conn.execute (sql2)

wsh.echo "if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[" & table_name & "]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)"

wsh.echo "drop table [dbo].[" & table_name & "]"

wsh.echo "GO"

wsh.echo "CREATE TABLE [dbo].[" & table_name & "] ("

do while not rs2.eof

col_dn = rs2("domain_name")

col_name = rs2("column_name")

col_type = rs2("data_type")

col_len = rs2("character_octet_length")

col_an = rs2("collation_name")

col_is = rs2("IS_NULLABLE")

sql = chr(9)&"[" & col_name & "] "

If col_dn = "id" Then

sql = sql & col_dn &" "

Else

sql = sql & "[" & col_type & "] "

If col_len <> "" Then

sql = sql & "(" & col_len & ") "

End If

If col_an <> "" Then

sql = sql & "COLLATE " & col_an

End If

End If

If col_is = "No" Then

sql = sql & " NOT NULL "

Else

sql = sql & " NULL "

End If

If i = num Then

sql = sql & Chr(13)&Chr(10)&") ON [PRIMARY]"

Else

sql = sql & ","

End If

i = i +1

wsh.echo sql

rs2.movenext

loop

wsh.echo "GO"

rs2.close

Set rs2 = Nothing

conn.close

Set conn=Nothing

Sub show_help()

wsh.echo "code by N37P47ch "

wsh.echo "cscript show_table.vbs ip user pass database table"

End Sub

推荐信息
Baidu
map