Avatar billede annpro Nybegynder
12. maj 2008 - 22:58 Der er 11 kommentarer og
1 løsning

Data fra csv til mysql via asp

Jeg har en csv fil med data som jeg ønsker at importere til en mysql database, hvordan gør jeg ?? det haster så et hurtigt svar ville være godt
Avatar billede thesurfer Nybegynder
13. maj 2008 - 00:35 #1
Giv et eksempel på indholdet af filen, og strukturen af tabellen hvor dataene skal i..
Avatar billede annpro Nybegynder
13. maj 2008 - 00:45 #2
filens data info.csv
Dato;Tekst;Beløb;Rentedato;Saldo
09-05-2008;DK 156548987;1.100,00;10-05-2008;358.5654,00

Min connection string
Set Conn = Server.CreateObject("ADODB.Connection")
conStr = "driver={MySql};server="& session("SQLserveradr") &";database="& session("SQLdatabase")
conStr = conStr & ";uid="& session("SQLlogin") &";pwd="& session("SQLpassword") & ";OPTION=16386"
Conn.Open conStr

skal sættes ind i en tabel der hedder f.eks. bank_tabel
Avatar billede annpro Nybegynder
13. maj 2008 - 00:47 #3
forresten: hver linje i csv filen afsluttes med en underlig firkant
Avatar billede thesurfer Nybegynder
13. maj 2008 - 00:53 #4
Hvad hedder felterne i din tabel "bank_tabel", og hvilke typer af de?

Jeg kunne forestille mig, at feltet til "Dato" er af type "dato", og feltet til "tekst" er af typen "tekst" (med op til 255 tegn)..

Skriv venligst kolonnenavn og type..

Eksempel:

Dato: dato
Tekst: tekst
Rentedato: dato
..osv..
Avatar billede annpro Nybegynder
13. maj 2008 - 07:36 #5
Det kan gøre lige meget hvad felttyperne er, for min skyld kan det være tekstfelter, men eller felter med samme navne som min datafil

Dato - dato felt
Tekst - Tekstfelt 150
Beløb - Decimal 5,2
Rentedato - dato felt
Saldo - Decimal 5,2

Men synes nu teksten sagde det hele selv
Avatar billede annpro Nybegynder
13. maj 2008 - 22:00 #6
havde du en løsning ?
Avatar billede thesurfer Nybegynder
14. maj 2008 - 23:45 #7
Jeg beklager at jeg først svarer nu.. jeg har haft travlt.

Jeg har lavet noget kode, der tager indeholdet fra en  fil ("data.csv") og smider indeholdet i en database ("db1.mdb").

Du skal sådan set bare rette værdien af variablerne der starter med "filnavn_" (dvs, dem der peger på "data.csv" og "db1.mdb"), så de passer med dine filer.

Da der er forskel på dansk dato (dd-mm-åååå) og engelsk dato (mm-dd-åå), kan du altid få problemer på det punkt..

Angående tal med komma.. vær opmærksom på hvad du bruger "," og "." til.. Og jeg mener at det på engelsk er modsat dansk..


Her er koden.. ret variablerne der starter med "filnavn_":

<%
Option Explicit


Dim filnavn_csv, filnavn_db

' --- Redigeringsområde START ---


' Ret filnavnet på filen med dataene her:
filnavn_csv = "data.csv"

' Ret filnavnet på database-filen her:
filnavn_db  = "db1.mdb"


' --- Redigeringsområde STOP  ---


Function FixDouble(s)
s = Replace(s, ".", "")
s = Replace(s, ",", ".")
FixDouble = s
End Function

Dim fso, f, txt
Set fso = server.CreateObject("scripting.filesystemobject")
Set f = fso.opentextfile(server.mappath(filnavn_csv))
txt = f.readall
Set f = Nothing
Set fso = Nothing

Dim arrTekstfil, arrLinier
arrTekstfil = Split(txt, vbCrLf)

Dim connstr, conn, sql
Set conn = Server.CreateObject("ADODB.Connection")
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(filnavn_db)

conn.Open connstr

Dim i, fejl, svar
Dim arr, dato, tekst, beloeb, rentedato, saldo
For i = LBound(arrTekstfil) To UBound(arrTekstfil)

    arrLinier = Split(arrTekstfil(i), ";")

    dato = arrLinier(0)
    tekst = arrLinier(1)
    beloeb = FixDouble(arrLinier(2))
    rentedato = arrLinier(3)
    saldo = FixDouble(arrLinier(4))

    sql = ""
    sql = sql & " insert into bank_tabel (dato, tekst, beloeb, rentedato, saldo)"
    sql = sql & " values(#" & dato & "#, '" & tekst & "', " & beloeb & ", #" & rentedato & "#, " & saldo & ")"

    On Error Resume Next
    conn.Execute(sql)
    If Err.number <> 0 Then fejl = fejl & Err.number & " - " & Err.description & ":<br><b>SQL</b>: " & sql & "<br><br>"
Next

conn.Close
Set conn = Nothing

Response.write Now & ", information:<br><br>"
If fejl <> "" Then
    response.write "Der opstod fejl:<br><br>" & fejl
Else
    response.write "Ingen fejl.. alt ok."
End If
%>
Avatar billede thesurfer Nybegynder
14. maj 2008 - 23:46 #8
Rettelse:

..dansk dato (dd-mm-åååå) og engelsk dato (mm-dd-åååå)..
Avatar billede annpro Nybegynder
14. maj 2008 - 23:49 #9
det skal ikke køres op i en access database men en mysql database ??
Avatar billede thesurfer Nybegynder
15. maj 2008 - 02:06 #10
Ahh, ja..

Så skal min "connstr" bare erstattes af din "conStr"

Læg mærke til at der er 2x "n" i navnet på min variabel, og kun 1x "n" i din variabel.

Se f.eks. http://www.aspdev.org/articles/asp-mysql-connect/ hvor de har viser hvordan man hiver data ud..

SQL sætningen "insert" er den samme i Access og MySQL, så vidt jeg ved..

Der kan muligvis være småproblemer med datoer.. f.eks., om der skal være "#" eller ej..
Avatar billede annpro Nybegynder
17. maj 2008 - 08:11 #11
smid et svar så du kan få point
Avatar billede thesurfer Nybegynder
17. maj 2008 - 13:28 #12
Hermed gjort.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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