Avatar billede fromse Nybegynder
22. september 2008 - 09:30 Der er 4 kommentarer

Importere txt-fil til DB

Hej eksperter..

Jeg har et problem med import af tekst fra en fil til en database. Jeg har en txt-fil der ser ud som nedenstående. Tekst under td1 skal sættes ind i felt1 i db osv. Den tekst der skal indsættes starter fra linie 13 og slutter når den når til "End of file"

Håber der en en der kan hjælpe mig her... For skal have lagt 26000 txt-filer ind i en database :)

; Zone for test.dk
(td1)  (td2)  (td3)            (td4)
@    NS     ns1.danaweb.dk.
@    NS     ns2.danaweb.dk.
@    NS     10.0.0.1
mail1    A     81.19.253.131
mail2    A     81.19.253.132
@    A     81.19.253.158
www    A     81.19.253.158
post    A     81.19.253.131
*    A     81.19.253.158
test    A     81.19.253.158
@    MX     10         mail1
@    MX     20         mail2
; End of file
Avatar billede fromse Nybegynder
22. september 2008 - 09:32 #1
Den så flottere ud da jeg kopierede den ind... .txt-filen kan hentes her:
http://fromse.dk/test.dk.txt
Avatar billede thomas_yde Nybegynder
22. september 2008 - 22:38 #2
Er det MsSql Database?
Avatar billede fromse Nybegynder
22. september 2008 - 22:49 #3
Ja, det er det...
Avatar billede thomas_yde Nybegynder
23. september 2008 - 09:23 #4
Så vil det nemmeste være at du lave en SQL bruger, som er BULK admin og laver en løkke der løber din mappe igennem for de filer, som har det samme format og bulk importere dem til en midlertidlig tabel. Hvorefter du kan indsætte dem i nogle andre tabeller hvis du har et design de skal følge.

Du kan måske få en ide med det her. Det er klippet og du skal selv tilpasse de nødvendige ting. Men ideen kan du nok se:

    Dim fso,folder,files,file,text, linefeed
    Set fso = Server.createObject("Scripting.FileSystemObject")
    set folder = fso.GetFolder(DTSGlobalVariables("drop_path").Value)
    set files = folder.Files
    Dim Conn,sql,conString

    conString = "indsæt din connection string)
    Conn.Open conString
   
    For each file in files
        If DateDiff("n", file.DateLastModified, Now())  < 30 Then
            strSQL = " EXEC ReadAgentFile '" &  folder & "\" & File.Name & "'"
            Conn.Execute(strSQL)   
        End If
       
    Next
   
   
   
    create procedure ReadAgentFile @filename as varchar(255)
    AS


    DECLARE @SQL varchar(2000)
    SET @SQL = "BULK INSERT dintable FROM '" + @filename + "'WITH (FIELDTERMINATOR = '\t')"
    EXEC(@SQL)


    GO
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
Kurser inden for grundlæggende programmering

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