2017-01-28 51 views
0

我有一個項目,我必須將數據從Excel電子表格發送到Oracle數據庫。從Excel導出到Oracle

這是我正在使用的代碼,但它不起作用,我在第二個字符串語句的strSQL語句中出錯。我正在嘗試將一個Excel範圍名稱用於InsertUpdate到Oracle數據庫中。

Const hostName = "host" 
Const portNo = "port" 
Const srvSID = "SID" 
Const usrID = "username" 
Const usrPwd = "password" 

Sub ADOInsert() 
Dim cnAdo As ADODB.Connection 
Dim strConnString As String 
Dim strSQL As String 
Dim ws1 As Excel.Worksheet 
'set the worksheet: 
Set ws1 = ThisWorkbook.Worksheets("IMPDATA") 
Dim Imprange As Range 
Set Imprange = ws1.Range("a2:d6") 

    strDriver = "Driver={Microsoft ODBC for Oracle};" 
    strParams = "CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=" + hostName + ")(PORT=" + portNo + "))(CONNECT_DATA=(SID=" + srvSID + ")));" 
    strUser = "UID=" + usrID + ";PWD=" + usrPwd + ";" 

    strConnString = strDriver + strParams + strUser 


    Set cnAdo = New ADODB.Connection 
    cnAdo.Open strConnString 

    '/ this is hardcoded for number of rows and columns. 
    For lngRow = 1 To 10 
     strSQL = "Insert Into TESTDATA1"'/ 
     strSQL = strSQL & "'" & Range(Imprange, 1).Value & "', " '/ REQUEST_NUMBER 
     strSQL = strSQL & "'" & Range(Imprange, 2).Value & "', " '/ CID 
     strSQL = strSQL & "'" & Range(Imprange, 3).Value & "', " '/ SERVER_TYPE 
     strSQL = strSQL & "'" & Range(Imprange, 4).Value & "' " '/ COST 
     cnAdo.Execute strSQL 
    Next 
    cnAdo.Close 
    Set cnAdo = Nothing 
End Sub 
+4

歡迎來到SO!我們更願意幫助您解決錯誤,當然不是在這裏爲您寫信。我建議在網上搜索指南並關注它。我們可以幫助解決您遇到的任何問題。請同時通過這個[問題清單](https://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist),這將有助於您的問題得到更有價值的答案和關注。 – ti7

回答

2

去最簡單的方法是將Excel文件轉換爲.csv格式,然後你可以使用SQL加載器創建自己的控制文件,否則,你可以創建一個外部表指向您.csv文件。否則,您可以通過編程方式解析.csv文件,並使用ODBC,JDBC等來加載表上的每一行。

+0

要求是通過excel發送 – hforte