11. maj 2005 - 17:21
Der er
5 kommentarer
Indsætte data fra Excel i tabel på SQL server
Jeg har oprettet en ODBC-datakilde under min system-DSN og vil nu gerne indsætte nogle rækker fra et Excelark i en tabel i denne database.
Jeg har tænkt mig at skrive koden i VBA. Er der nogen som kan hjælpe mig lidt på vej?
1. At lave en forbindelse (connect)
2. At hive data ud (select)
3. At indsætte data (insert)
Jeg har prøvet at importere data via "importer eksterne data" og det fungerer fint, men ved ikke hvordan jeg skal indsætte data i tabellen?
Hvis du har enterprise manager kan du bruge DTS. Du højreklikker på databasen og vælger Import data. Så skulle det være ret let at vælge dit excelark, vælge databasen, vælge den tabel der skal indsættes i, mappe hvordan kolonnnerne skal hænge sammen og ...
I sidste trin kan du vælge at køre den med det samme, eller gemme en package. prøv det sidste, og åbn derefter pakken (under Data transformation services > Local packages) Så kan du rette i den og køre den så mange gange du vil, indtil den gør det rigtigt
Men husk at teste på en anden tabel først, jeg tror ikke på at det bliver rigtigt første gang :o)
Hej med Jer
Tak for kommentarerne, har imidlertid selv fundet en løsning ved at søge forskellige steder på nettet.
Formålet ved løsningen er at jeg har en masse data i en lokal database, som jeg skal uploade til en ekstern SQL-database. Nu har jeg først indhentet mine lokale data i et array og herefter fandt jeg frem til denne løsning:
'-----------------------------------------------------------------
Sub Insert_Data_From_Array()
Dim Opdatering As Integer
Opdatering = 1
Sql = ""
'Etablerer forbindelse til database
Set Conn = New ADODB.Connection
Conn.Open "dsn=Database;uid=brugernavn;pwd=password;"
For Q = 1 To UBound(MitArray, 2)
'Genererer SQL-sætning
Sql = Sql & "Insert into tabelnavn (Felt1,Felt2,Felt3,Felt41,Felt51,Felt6) values (" & "'" & Format(MitArray(0, Q - 1), "mm.dd.yyyy") & "', " & MitArray(1, Q - 1) & ", '" & MitArray(2, Q - 1) & "', '" & MitArray(3, Q - 1) & "', '" & Format(MitArray(4, Q - 1), "mm.dd.yyyy") & "', " & Replace(MitArray(5, Q - 1), ",", ".") & ");" & vbLf
'Opdaterer tabel for hver 500 rækker
If Q / Opdatering = 500 Then
Opdatering = Opdatering + 1
Set Rst = Conn.Execute(Sql)
Sql = ""
End If
Next Q
'Hvis der er rækker, som endnu ikke er blevet opdaterede, så gør vi det til sidst
If Sql <> "" Then
Set Rst = Conn.Execute(Sql)
End If
'Vi lukker forbindelsen til databasen
Conn.Close
End Sub