Avatar billede tblaster Nybegynder
14. september 2003 - 12:16 Der er 19 kommentarer og
1 løsning

Asp side skal hente tekst fra fil og lagre det i my sql db

Jeg har en fil 1.txt med en masse tekst. Teksten skal være adskilt på en af følgende måder eller en anden hvis det gør det nemmere at løse problemet:

<p>Tekst 1</p>
<p>Tekst 2</p>
Eller:
Tekst 1
Tekst 2

Det jeg så gerne skal have er en asp kode som henter hver tekst linje for sig og lagre den i en my sql database.

Teksten skal gemmes i et felt der hedder Tekst. Derudover er der følgende felter:
ParentID
Sprog
som altid skal have en værdi. Eks ParentID = 42, Sprog = DK.

Hvordan fikser jeg lige det problem?
Avatar billede Slettet bruger
14. september 2003 - 12:58 #1
<%
'åben din db

Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("/mappe/fil.txt")
Set f = fso.OpenTextFile(filespec,1)
id=0
Do While not f.AtEndOfStream
  id=id+1
  conn.execute("insert into [tabel](Tekst,ParentID,Sprog) values('" & f.Readline & "'," & id & ",'"DK"')
Loop

f.Close
%>
Avatar billede tblaster Nybegynder
14. september 2003 - 18:12 #2
Nu har jeg rettet det til følgende:
  conn.execute("INSERT INTO Data VALUES (" & id & ", 657, '', '" & f.Readline & "', 'DK', 20030914180635, , , '')")

Men får denne fejl:
[TCX][MyODBC]You have an error in your SQL syntax near ' , '')' at line 1

Jeg har ændret det hele til følgende:
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("Data.txt")
Set f = fso.OpenTextFile(filespec,1)
id=126
Do While not f.AtEndOfStream
  id=id+1
  conn.execute("INSERT INTO Data VALUES (" & id & ", 657, '', '" & f.Readline & "', 'DK', 20030914180635, , , '')")
Loop

f.Close
Avatar billede Slettet bruger
14. september 2003 - 18:19 #3
Hvad mener du med denne linje??

conn.execute("INSERT INTO Data VALUES (" & id & ", 657, '', '" & f.Readline & "', 'DK', 20030914180635, , , '')")

Hvis du vil sætte noget ind, skal databasen vide i hvilke felter

("INSERT INTO Data(id, nr, tomtfelt, tekst, sprog, etellerandet, tomtfelt, tomtfelt, tomtfelt) values(" & id & ", 657, '', '" & f.Readline & "', 'DK', 20030914180635, '', '', '')")
Avatar billede tblaster Nybegynder
14. september 2003 - 18:25 #4
Nu har jeg rettet det til følgende:
conn.execute("INSERT INTO Data(Id, ParentID, Navn, Tekst, Sprog, Dato, Score, Stemmer, Ip) VALUES (" & id & ", 657, '', '" & f.Readline & "', 'DK', 20030914180635, , , '')")

Det giver denne fejl:
[TCX][MyODBC]You have an error in your SQL syntax near ' , '')'
Avatar billede Slettet bruger
14. september 2003 - 19:12 #5
hvis du ikke vil definere kolonner, skal de bare udelades:

conn.execute("INSERT INTO Data(Id, ParentID, Navn, Tekst, Sprog, Dato) VALUES (" & id & ", 657, '', '" & f.Readline & "', 'DK', 20030914180635)")
Avatar billede tblaster Nybegynder
14. september 2003 - 20:00 #6
Det giver:
[TCX][MyODBC]Duplicate entry '127' for key 1

Det er stadig i min conn.execute den melder fejlen.
Avatar billede Slettet bruger
14. september 2003 - 20:36 #7
hov... det er fordi navn også skal slettes

conn.execute("INSERT INTO Data(Id, ParentID, Tekst, Sprog, Dato) VALUES (" & id & ", 657, '', '" & f.Readline & "', 'DK', 20030914180635)")

ellers prøv at udskrive den:

response.write "INSERT INTO Data(Id, ParentID, Tekst, Sprog, Dato) VALUES (" & id & ", 657, '', '" & f.Readline & "', 'DK', 20030914180635)"
Avatar billede tblaster Nybegynder
14. september 2003 - 20:57 #8
Så får jeg:
[TCX][MyODBC]Column count doesn't match value count at row 1

En response.write giver:
INSERT INTO Data(Id, ParentID, Tekst, Sprog, Dato) VALUES (658, 126, '', 'Adam kom først, det gør mænd altid.', 'DK', 20030914180635)
Avatar billede Slettet bruger
14. september 2003 - 21:04 #9
er du sikker på, det er tal og ikke bogstaver, din felterne er sat til?? ellers skal du have ' ' omkring...

fandt også lige ud af, at der ikke var slettet ", ''" i values..

INSERT INTO Data(Id, ParentID, Tekst, Sprog, Dato) VALUES (658, 126, 'Adam kom først, det gør mænd altid.', 'DK', 20030914180635)
Avatar billede tblaster Nybegynder
14. september 2003 - 21:14 #10
Id er Int(11)
ParentID er Int(4)
Tekst er text
Sprog er text
Dato er timestamp(14)

Jeg ændrede lige et felt og nu får jeg ingen fejl men nu står siden bare og arbejder og der sker ikke noget. Der kommer ingen fejl men der bliver heller ikke lagret noget i databasen.
Avatar billede tblaster Nybegynder
14. september 2003 - 21:17 #11
Ændrede den til det sidste du skrev:

conn.execute("INSERT INTO Data(Id, ParentID, Tekst, Sprog, Dato) VALUES (658, 126, 'Adam kom først, det gør mænd altid.', 'DK', 20030914180635)")

Dette giver denne fejl:
[TCX][MyODBC]Duplicate entry '658' for key 1
Avatar billede tblaster Nybegynder
14. september 2003 - 21:20 #12
Jeg kan se at den nu lagre den første linje i databsen men melder så fejlen.
Avatar billede Slettet bruger
14. september 2003 - 21:23 #13
prøv at sætte f.movenext ind lige før loop:

Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("Data.txt")
Set f = fso.OpenTextFile(filespec,1)
id=126
Do While not f.AtEndOfStream
  id=id+1
  conn.execute("INSERT INTO Data(Id, ParentID, Tekst, Sprog, Dato) VALUES (658, 126, 'Adam kom først, det gør mænd altid.', 'DK', 20030914180635)")
  f.movenext
Loop

f.Close
Avatar billede tblaster Nybegynder
14. september 2003 - 21:25 #14
Så lige at vi havde fået angivet nogle værdier og at de ikke var varriable mere. Har ændret det til følgende:

conn.execute("INSERT INTO Data(Id, ParentID, Tekst, Sprog, Dato) VALUES (" & id & ",  126, '" & f.Readline & "', 'DK', 20030914180635)")

Men nu får er det så igen at siden bare står og køre uden at der sker noget. Den melder ingen fejl og der lagres intet i databasen.
Avatar billede Slettet bruger
14. september 2003 - 21:26 #15
har du prøvet der, jeg lige skrev?
Avatar billede tblaster Nybegynder
14. september 2003 - 21:31 #16
Jeg fik det til at virke ... dog uden f.movenext ...

Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("aa.txt")
Set f = fso.OpenTextFile(filespec,1)
id=656
Do While not f.AtEndOfStream
  id=id+1
  conn.execute("INSERT INTO Data(Id, ParentID, Tekst, Sprog, Dato) VALUES (" & id & ",  126, '" & f.Readline & "', 'DK', 20030914180635)")
Loop
Avatar billede Slettet bruger
14. september 2003 - 21:34 #17
Det var da godt nok... hvad var der i vejen?
Avatar billede tblaster Nybegynder
14. september 2003 - 21:35 #18
Lige en ekstra ting ... hvis jeg i min txt fil smider en titel ind også, eks:
Titel, tekst

Hvordan kan jeg få få dette også smidt ind i databasen, altså noget med:
conn.execute("INSERT INTO Data(Id, ParentID, Navn, Tekst, Sprog, Dato) VALUES (" & id & ",  126, '" & f.ReadlineTitel & "', '" & f.ReadlineTekst & "', 'DK', 20030914180635)")
Avatar billede tblaster Nybegynder
14. september 2003 - 21:36 #19
Jeg ved ikke hvad der var i vejen.
Avatar billede Slettet bruger
14. september 2003 - 21:36 #20
hehe... nå, men det var da godt, du fandt ud af det...
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

Seneste spørgsmål Seneste aktivitet
I går 21:00 Libre Office Impress Af Frank i Andre styresystemer
I går 11:47 VB script Af Jenshentze i Word
I går 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel