Vinnaren i pepparkakshustävlingen!
2010-02-27, 10:26
  #1
Medlem
Antts avatar
Jag ska först och främst säga att jag är en nybörjare när det gäller databaser och har stött på ett problem.

Jag har ungefär 2000 namn (1 namn/rad) i ett excel-dokument. För varje namn vill jag skapa en användare till ett forum jag håller på med. Hur gör jag det här lättast?

Använder mig av MySQL, så MS Office färdiga funktioner för att exportera data tycks inte fungera.

Om det skulle hjälpa (Vilket jag tvivlar, men för säkerhets skull ) så ser tabellen ut såhär: http://img14.imageshack.us/img14/7438/databas.jpg
__________________
Senast redigerad av Antt 2010-02-27 kl. 10:30.
Citera
2010-02-27, 11:20
  #2
Medlem
desmoduss avatar
Visserligen borde det finnas providers för att exportera data från excel till en mySQL-tabell.

Hittade nåt här:
http://forums.mysql.com/read.php?10,233122,233193

Ingen aning om det funkar, har aldrig jobbat med mySQL.

Annars finns ju en lite mer manuell men ganska snabb lösning, nämligen att skriva en INSERT-sats i kolumnen bredvid din namnkolumn och plutta in värdet från namnkolumnen på rätt ställe i insert-satsen.

Sen är det bara att kopiera kolumnen med insert-satsen till alla rader i excelarket och slutligen kopiera hela excel-kolumnen och klistra in i var det nu är man exekverar SQL i mySQL.
Citera
2010-02-27, 11:53
  #3
Medlem
SchackMatts avatar
Spara excelfilen som CSV (Comma-Separated Values) och skicka sedan följande till din MySQL-databas.

Kod:
LOAD DATA INFILE '/home/Antt/excelfil.csv' INTO TABLE `users`; 

Om din CSV-fil ser ut till exempel så här när du öppnar den i Notepad

Kod:
id;user;password
1;John;p123
2;Jane;p321
3;Bill;o234
4;Beatrice;o432
5;Claes;i345
6;Chloë;i543
7;Mark;u456
8;Mary;u654
9;Steven;y567
10;Sarah;y765

Kan din MySQL-query så ut så här:

Kod:
LOAD DATA INFILE 'excelfil.csv' INTO TABLE `usersFIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' IGNORE 1 LINES 

FIELDS TERMINATED BY anger alltså vilket tecken som avskiljer de olika fälten. LINES TERMINATED BY anger hur raderna slutar. Detta kan du troligtvis lämna blankt. Kör du Windows ska '\n' vara '\r\n'. IGNORE 1 LINES betyder att första raden ignoreras. I exemplet ovan, uppstår annars en konflikt i numreringen av `id` om du har auto increment på det fältet i din databas.

En annan lösning vore att göra det med ett scriptspråk, så som PHP. Antingen använder du phpExcel, phpExcelreader eller dylikt för att göra om excelfilen till en array och därefter loopa in alla data i en databas med en foreach(), eller så sparar du dokumentet som CSV (Comma-Separated Values) och därefter använda inbyggda funktioner i PHP för att göra om datan till en array och sedan in i MySQL.
Citera
2010-02-27, 13:58
  #4
Medlem
Antts avatar
håhå! Det hela löste sig, phpMyAdmin hade till och med en färdig funktion för importering av .csv - filer. Svårare än så var det inte

Tackar för hjälpen!
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback