webForumDet fria alternativet

Från Excel till MySQL?

ASP

10 svar · 249 visningar · startad av MM

Medlem sedan maj 2000138 inlägg
Frågan#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?

------------------
667 - The neighbour of the beast.

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.

------------------
Doesn't 'expecting the unexpected' make the unexpected expected?
webeye.nu

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 :)

------------------
Varför bråka när man kan kramas?

Medlem sedan dec. 19998 577 inlägg
#4

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

------------------
Doesn't 'expecting the unexpected' make the unexpected expected?
webeye.nu

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?

------------------
667 - The neighbour of the beast.

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...

------------------
667 - The neighbour of the beast.

Medlem sedan dec. 19998 577 inlägg
#7

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

'c:windowstempphp7240.tmp'

------------------
Doesn't 'expecting the unexpected' make the unexpected expected?
webeye.nu

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...?

------------------
667 - The neighbour of the beast.

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

------------------
SPiN, bjorne.w@telia.com

-- Man vinner inte silver, man förlorar guld --

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...

------------------
667 - The neighbour of the beast.

[Redigerat av MM den 22 nov 2001]

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!

------------------
667 - The neighbour of the beast.

255 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)