Avatar billede riishoj Nybegynder
07. oktober 2006 - 11:29 Der er 15 kommentarer og
1 løsning

Uploade csv fil til database

Jeg søger et script, som kan uploade en csv fil til en database, i første omgang Access men senere sandsynligvis til MySql. Filen skal kunne vælges ved hjælp af en "gennemse" knap.
Avatar billede c-sharp Nybegynder
07. oktober 2006 - 11:57 #1
Da kan bruge aspsmartupload (http://www.aspsmart.com/aspSmartUpload/) til at få filen op på serveren, derefter kan du tage fat i den og ligge den i din db.
Avatar billede riishoj Nybegynder
07. oktober 2006 - 12:09 #2
Værdierne i csv filen er adskilt af semikolon. Jeg skal jo have disse adskilte værdi sat ind i de rigtige kolonner i tabellen i Access. Det er så vidt jeg ved ikke noget AspSmartUpload bare lige kan klare.
Avatar billede c-sharp Nybegynder
07. oktober 2006 - 14:49 #3
Her er et eksempel på at håndtere en csv fil http://www.roseindia.net/search/showtutorials.php?id=8102
Avatar billede riishoj Nybegynder
08. oktober 2006 - 18:44 #4
Jeg har nu endelige fået kigget på dit link.
Der er lige det problem, at filerne ,som csv2htm.asp håndterer, skal være separeret med komma, mens de csv filer jeg har, er separeret med semikolon. Hvordan klarer man lige den?
Avatar billede riishoj Nybegynder
08. oktober 2006 - 19:10 #5
Er der i øvrigt nogen som ved, hvorfor Excel DK gemmer csv filer (comma separated value) med semikolon som separator?
Avatar billede c-sharp Nybegynder
09. oktober 2006 - 07:46 #6
Der er et par steder hvor der står følgende:

total_split_text=split(total_imported_text,",")
'Split the file up by comma

Det skal du rette til semikolon
Avatar billede riishoj Nybegynder
09. oktober 2006 - 15:15 #7
Det har jeg prøvet, men så virker scriptet ikke.
Avatar billede riishoj Nybegynder
09. oktober 2006 - 15:45 #8
Sorry, det virker alligevel. Jeg havde været lidt for ivrig med at udskifte komma med semikolon.

Nu har jeg så fået lavet en fin html-tabel. Hvordan får jeg den så smidt ind i en database?
Avatar billede c-sharp Nybegynder
09. oktober 2006 - 20:39 #9
Nu var det mere ment som inspiration til at håndtere en csv fil.

men når du nu har fat i værdierne for hver post så laver du en INSERT i din tilhørende tabel.
Avatar billede riishoj Nybegynder
09. oktober 2006 - 22:02 #10
"men når du nu har fat i værdierne for hver post så laver du en INSERT i din tilhørende tabel."
Jeg ved desværre ikke, hvordan jeg får fat i værdierne. Min viden begrænser sig til at hente data via en formular og derefter INSERT INTO en tabel i en database. Her har vi jo med flere linjer at gøre, som skal indsættes i tabellen.

Hvis vi nu siger, at min tabel i db'en indeholder felterne "Fornavn", "Efternavn" og "By", hvordan får jeg så indsat data fra filen navne.csv i tabellen?

Scriptet ser nu sådan ud. Skal der evt. redirectes til en anden side, som så indsætter html-tabellen i db'en?

Eller er scriptet som laver csv-filen om til en html-tabel i virkeligheden overflødig, da man vel kan få en csv-fil indlæst i en db-tabel med fso?

Jeg mangler altså noget konkret kode for at komme videre. Flere point er ikke noget problem.

Her kommer scriptet:

<title>CodeAve.com(CSV to HTML)</title>
<body bgcolor="#FFFFFF">
<%
csv_to_read="navne.csv"
set fso = createobject("scripting.filesystemobject")
set act = fso.opentextfile(server.mappath(csv_to_read))

imported_text = act.readline
'Read the first line of the csv, typically these are colum headings

imported_text = replace(imported_text,chr(13),";")
'Change the line breaks to commas to delimit through-out

imported_text = replace(imported_text,chr(34),"")
'Remove al quotes (If your csv has quotes other than to seperate text
'You may want to remove this modifier to the imported text

split_text=split(imported_text,";")
'Split the top line by comma

num_imported=ubound(split_text)+1
'Count the number of splits and add one for the last element

total_imported_text = act.readall
'Read the rest of the csv

total_imported_text = replace(total_imported_text,chr(13),";")
'Change the line breaks to commas to delimit through-out

total_imported_text = replace(total_imported_text,chr(34),"")
'Remove al quotes (If your csv has quotes other than to seperate text
'You may want to remove this modifier to the imported text

total_split_text=split(total_imported_text,";")
'Split the file up by comma

total_num_imported=ubound(total_split_text)
'Count the number of splits
'This will be the numer of cells in the table
%>
<table width="100%">
<tr>
<%
for table = 0 to num_imported -1
'This will create a table cell for each column in the csv
' (-1 is used because arrays begin with 0)
%>
<td width="<% response.write 100/(num_imported) 'make the cell widths even %>%">
<b><%= split_text(count) %></b>
</td>
<%
count=count+1
next
%>
</tr>
<tr>
<%
'Reset the counter
count=0
' This wil determine how many rows are in the csv
for tablea = 0 to (total_num_imported/ (num_imported)-1)
%>
<%
for table = 0 to num_imported -1
'This will create a table cell for each column in the csv
' (-1 is used because arrays begin with 0)
%><td width="<%= 100/(num_imported) %>%">
<%= total_split_text(count)
%>
</td>
<%
count=count+1
next ' end of the observation
%></tr>
<% next 'end of the csv %>
</table>
Avatar billede c-sharp Nybegynder
10. oktober 2006 - 15:28 #11
Her er en færdig løsning som importere data fra din csv fil indtil din database (koden er fra dette spørgsmål http://www.eksperten.dk/spm/22176):

<%

set DB = Server.CreateObject(\"ADODB.Connection\")
DB.open \"DBQ=stien til basen\\basen.mdb;DefaultDir=stien til basen\\;Driver={Microsoft Access Driver (*.mdb)};\"

SQL = \"SELECT * FROM din-tabel\"
Set RS = Server.CreateObject(\"ADODB.Recordset\")
RS.Open SQL, DB, 3, 3


Set op = CreateObject(\"Scripting.FileSystemObject\")
Set fil = op.OpenTextFile(server.mappath(\"/din.csv\"))

do while not fil.AtEndOfStream
    Line = fil.readline
    LineSplit = split(Line,\";\")
    RS.Addnew
    RS(\"felt1\") = Linesplit(0)
    RS(\"felts\") = Linesplit(1)
 
    osv
       
RS.Update
loop

set fil = nothing
set RS = nothing
%>
Avatar billede riishoj Nybegynder
10. oktober 2006 - 19:24 #12
c-sharp> Er lige kommet hjem fra 12 timers arbejde og er helt flad. Tester det i morgen, men det ser lovende ud.
Avatar billede riishoj Nybegynder
13. oktober 2006 - 13:54 #13
Undskyld at jeg først reagerer nu, men jeg fandt selv en anden løsning, og så glemte jeg dig fuldstændig. Send et svar så du kan få point:)
Avatar billede c-sharp Nybegynder
13. oktober 2006 - 13:59 #14
svar :-)
Avatar billede riishoj Nybegynder
13. oktober 2006 - 14:12 #15
Tak for hjælpen.
Avatar billede c-sharp Nybegynder
13. oktober 2006 - 14:24 #16
selvtak og tak for point ;-)
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