数据库里有一个表,里面的数据量非常大,大概好几G到上十G之多,我只想知道表的字段名和字段数目,而对于表的数据却并不关心。以前的做法是(VB):
str="select * from table"
set rs=cn.open str
FieCount=rs.Fields().Count
For i = 0 to FidCount - 1
FieName(i)=rs.Fields(i).Name
Next
可是,因为表实在太大,所以在执行rs=cn.open str这一句的时候,时间长的无法忍受。
后来,在SQL Plus(Oracle)里执行desc table语句可以返回,可是在VB里EXCUTE这一条语句却认为语句非法。
我曾经试图在SQL语句中加入where子句,控制rs的返回值数量,可是我却不知道这样做是不是还是检索表的所有数据,效率又没有实质性的提高。而到公司现场去很麻烦,实际测试一次效率的高低也不太可能。
请问:我应该咋办?请高手指点迷津
str="select * from table"
set rs=cn.open str
FieCount=rs.Fields().Count
For i = 0 to FidCount - 1
FieName(i)=rs.Fields(i).Name
Next
可是,因为表实在太大,所以在执行rs=cn.open str这一句的时候,时间长的无法忍受。
后来,在SQL Plus(Oracle)里执行desc table语句可以返回,可是在VB里EXCUTE这一条语句却认为语句非法。
我曾经试图在SQL语句中加入where子句,控制rs的返回值数量,可是我却不知道这样做是不是还是检索表的所有数据,效率又没有实质性的提高。而到公司现场去很麻烦,实际测试一次效率的高低也不太可能。
请问:我应该咋办?请高手指点迷津
Dim adoCN As New ADODB.Connection 'Access的
Dim strCnn As New ADODB.Recordset
str1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb" & ";Persist Security Info=False"
adoCN.Open str1
Set rstSchema = adoCN.OpenSchema(adSchemaTables)
Do Until rstSchema.EOF
out = out & "Table name: " & _
rstSchema!TABLE_NAME & vbCr & _
"Table type: " & rstSchema!TABLE_TYPE & vbCr
rstSchema.MoveNext
Loop
rstSchema.Close
adoCN.Close
Debug.Print outEnd SubPrivate Sub Command2_Click()
Dim adoCN As New ADODB.Connection 'Excel的
Dim strCnn As New ADODB.Recordset
str1 = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & App.Path & "\Book1.xls;" & "Extended Properties=""Excel 8.0;HDR=Yes;"";"
adoCN.Open str1
Set rstSchema = adoCN.OpenSchema(adSchemaTables)
Do Until rstSchema.EOF
out = out & "Table name: " & _
rstSchema!TABLE_NAME & vbCr & _
"Table type: " & rstSchema!TABLE_TYPE & vbCr
rstSchema.MoveNext
Loop
rstSchema.Close
adoCN.Close
Debug.Print outEnd Sub
我要的是表的字段名,而这样获取的恐怕是数据库的结构吧?
期待着您的答复……
set rs=cn.open str
FieCount=rs.Fields().Count
For i = 0 to FidCount - 1
FieName(i)=rs.Fields(i).Name
Next
或者直接
select * from tablename where false