Avatar billede jacobamundhenriksen Nybegynder
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?
Avatar billede janus_007 Nybegynder
12. maj 2005 - 13:08 #1
Har du adgang til Linked Servers?
Avatar billede ldanielsen Nybegynder
13. maj 2005 - 15:34 #2
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)
Avatar billede janus_007 Nybegynder
14. maj 2005 - 20:03 #3
ldanielsen-> Slap dog lidt af mand...

Det vigtigste i denne her sammenhæng er ikke en dum løsning med noget dts-snask men at høre hvad manden skal bruge det til og og det er noget der skal køre interaktivt.
Avatar billede ldanielsen Nybegynder
16. maj 2005 - 17:15 #4
Slap selv af ...
Avatar billede jacobamundhenriksen Nybegynder
17. maj 2005 - 15:04 #5
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
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester