Upload z Excelu do Oracle SQL tabulky

Příklad insertu sedmi sloupců (A-G) do tabulky na SQL.

Pro insert musí být v nastavení VBA povoleno „Microsoft ActiveX Data Objects 6.x Library“

Do sloupce „K“ skript vloží příkaz na INSERT v textové podobě, který se pak v cyklu provádí po jednotlivém řádku.

Je ošetřeno opakované spuštění – smaže předchozí data, pokud jsou vloženy ten samý den.
Jsou vynechány prázdné řádky.
Nakonec se vyčistí sloupec „K“.

----------------
Skript
----------------
Sub upload()

'Musi byt povoleno "Microsoft ActiveX Data Objects 6.0+ Library"

Dim objADO As ADODB.Connection
Dim strSQL
Dim dotaz As String
Dim ConString As String

' Priprava dat
Sheets("Zdroj").Select

Range("K2").FormulaLocal = "=KDYŽ(A2="""";""""; ""INSERT INTO DATA (JEDNA,DVA,TRI,CTYRI,PET,SEST,DATUM_VLOZENI) VALUES ('"" & A2 & ""','""& B2 & ""','""& C2 & ""','""& D2 & ""','""& E2 & ""','""& F2 & ""','"" & KDYŽ(G2="""";HODNOTA.NA.TEXT(DNES();""dd.mm.rrrr"");G2) &""')"")"
Range("K2").Select
Selection.AutoFill Destination:=Range("K2:" & "K" & Range("A" & Rows.Count).End(xlUp).Row)

' Application.Wait Now + TimeValue("00:00:01")

'Smazani predchozich dat - update pri znovuspusteni reportu
Range("K1").FormulaLocal = "=""delete FROM DATA where DATUM_VLOZENI like '""& HODNOTA.NA.TEXT(DNES();""dd.mm.rr"") & ""'"""

' Upload na SQL
Set objADO = CreateObject("ADODB.Connection")
' Rucni dotaz na DB
'objADO.Properties("Prompt") = 2

objADO.Open "Driver={Microsoft ODBC for Oracle}; CONNECTSTRING=SERVER; UID=LOGIN; PWD=PASSWORD;"

'SQL spusteni dotazu generovaneho v excelu jako text

pocet = Range("K" & Rows.Count).End(xlUp).Row

For provedeni = 1 To pocet ' prvni radek
dotaz = Sheets("Zdroj").Range("K" & provedeni)
If dotaz <> "" Then
objADO.Execute dotaz

End If
Next provedeni
objADO.Close
Set objADO = Nothing

'Vymaz prikazu
Range("K:K").Clear

End Sub

Příspěvek byl publikován v rubrice Excel notes, VBA. Můžete si uložit jeho odkaz mezi své oblíbené záložky.