Från Excel till MySQL?

ASP

10 svar · 281 visningar · startad av MM

Medlem sedan maj 2000138 inlägg
Trådstart#1

Hej
Någon som har tips om hur jag ska bära mig åt för att få ca 5000 artiklar från Excel till min MySQL-databas (använder 24-7webhosting.com)

Om det inte skulle gå alls, borde det väl gå att exportera excelfilen till kommaseparerad textfil och sen pula in den i db:n, men helst vill jag göra det direkt.

Nån som vet?

Medlem sedan dec. 19998 577 inlägg
#2

Du kan öppna excel-filen med ASP och loopa in den i MySQL. Sedan om det är effektivt eller inte vet jag inte. Har inte MySQL något verktyg för import?

Sök i detta forumet för hur du fixa med excel-filen via ASP.

Medlem sedan feb. 20012 412 inlägg
#3

Om det inte skulle gå alls, borde det väl gå att exportera excelfilen till kommaseparerad textfil och sen pula in den i db:n, men helst vill jag göra det direkt.

Exakt så får du göra. Om du använder phpmyadmin så läser du bara in textfilen och anger att kolumnerna separeras med kommatecken.

Finns ingen genväg vad jag vet.
http://cgi.webforum.nu/wf/Forum43/HTML/000247.html

Vet at det ska finnas en bättre tråd ang detta, men hittar inte den :(

mvh Jörgen :)

Medlem sedan dec. 19998 577 inlägg
#4

Varför använda mellanlagring när du kan överföra direkt?

Medlem sedan maj 2000138 inlägg
#5

hmm... testade lite lokalt, bara för att veta hur CSVfilen skulle se ut. Då blev det så här fel:
-------
SQL-query:

LOAD DATA LOCAL INFILE 'c:\windows\TEMP\php7240.TMP' INTO TABLE test FIELDS TERMINATED BY ';' ENCLOSED BY '\"' ESCAPED BY '\\' LINES TERMINATED BY '\n'
MySQL said: File 'c:windowstempphp7240.tmp' not found (Errcode: 2)
-----------

CSV-filen ser ut så här:
-----
1;fd g
2;ffs4
3;gg4sg

osv....
------

vad göra åt detta?

Medlem sedan maj 2000138 inlägg
#6

Vide, visst skulle jag vilja överföra direkt, men saken är ju den att jag inte har en aning om hur, därav alla dessa frågor...

Medlem sedan dec. 19998 577 inlägg
#7

Den sökvägen ser inte helt rätt ut:

'c:windowstempphp7240.tmp'
Medlem sedan maj 2000138 inlägg
#8

Nej, jag försöker ju hämta en fil som ligger i mappen "Mina Dokument", så jag fattar inte varför MySQL härjar om någon temp-katalog...?

Medlem sedan mars 20007 896 inlägg
#9

Jag håller med Vide, varför mellanlagra?
Du kan använda ett excel-dokument på samma sätt som du gör med vanliga databaser. Hemligheten ligger i drivern Microsoft Excel Driver (*.xls).

Här kommer lite ledtrådar i ett kodexempel som du kan experimentera med:

set excel = Server.CreateObject("ADODB.Connection")
excel.Open "driver={Microsoft Excel Driver (*.xls)}; DBQ=" & Server.MapPath("/mittlilladok.xls")

set mysql = Server.CreateObject("ADODB.Connection")
mysql.Open "driver=MySQL; server=DIN_SERVER; uid=USER; pwd=PASSWORD; database=DB"

set rsXls = excel.Execute("SELECT fld1, fld2, fld3 FROM spreadSheet")

Do Until rsXls.EOF

mysql.Execute("INSERT INTO spreadSheet (fld1, fld2, fld3) VALUES('" & rsXls("fld1") & "', '" & rsXls("fld2") & "', '" & rsXls("fld3") & "')")

rsXls.MoveNext
Loop

rsXls.Close
excel.Close
mysql.Close

set rsXls = Nothing
set excel = Nothing
set mysql = Nothin
Medlem sedan maj 2000138 inlägg
#10

Spin, jag testade din kod, men det verkar bli strul med excel-bladet.
Fel:
--------
Microsoft OLE DB Provider for ODBC Drivers fel '80040e37'

[Microsoft][ODBC Excel Driver] The Microsoft Jet database engine could not find the object 'SpreadSheet'. Make sure the object exists and that you spell its name and the path name correctly.

/ddrive/sprinfo/excel_mysql_test/test1.asp, rad 14
-----------
koden:

set excel = Server.CreateObject("ADODB.Connection")
excel.Open "driver={Microsoft Excel Driver (*.xls)}; DBQ=" & Server.MapPath("/mittlilladok.xls")
set mysql = Server.CreateObject("ADODB.Connection")
mysql.Open "driver=MySQL; server=Localhost; uid=XXXX; pwd=XXXX; database=test"

set rsXls = excel.Execute("SELECT fld1, fld2, fld3 FROM SpreadSheet")

Do Until rsXls.EOF

mysql.Execute("INSERT INTO spreadSheet (fld1, fld2, fld3) VALUES('" & rsXls("fld1") & "', '" & rsXls("fld2") & "', '" & rsXls("fld3") & "')")

rsXls.MoveNext
Loop

rsXls.Close
excel.Close
mysql.Close

set rsXls = Nothing
set excel = Nothing
set mysql = Nothing

Jag kan inte fatta det på annat sätt än att bladet i Excel-filen skall heta SpreadSheet, men då funkar det icke...

Medlem sedan maj 2000138 inlägg
#11

Sådärja, kom på vad som var fel.

Jag var ju tvungen att ange ett område i Excel-filen och döpa det området till 'Spreadsheet'.

Ifall någon annan ville veta...

Tack för hjälpen!

272 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
145 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)