/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Import af semikolon separeret fil vha mySQ~
Fra : Kurt G


Dato : 05-11-06 17:39

I fortsættelse af mit forrige indlæg fra 20-10 har jeg nu fået mySQL op at
køre efter anvisningen fra Martin.

Derudover skrev Martin:
> Jeg vil råde dig til at finde et program til at styre din MySQL, jeg vil
> anbefale dig at hente nedenstående
Klip...
> Dette er et bundle med programmerne
> * MySQL Administrator 1.2
> * MySQL Query Browser 1.2
> * MySQL Migration Toolkit 1.1
> * MySQL Workbench 1.1
Klip....
> Leg lidt med programmerne - Det eneste du nok skal lege mest med er
> Query Browser, det er ihvertfald dette program som kan lave databaser,
> tabeller osv.

Alt det har jeg nu gjort, og det virker.
Jeg har også oprettet min tabel.

Klip.....
> Du kan i query browser, vælge import af fil, og der kan du så vælge din
> CSV fil.
HER KNIBER DET
Jeg kan ikke finde noget sted, der tillader import af tekstfiler, eller
import i det hele taget.
SQL brovseren er version 1.2.4.

Den fil, som jeg gerne vil importere, er en flad *.txt-fil med semikolon som
seperator.

Kan jeg med en Query læse en tekstfil og sætte de enkelte linier ind som
poster?
Jeg vil nødigt til at skrive det ind selv, der er knap 42.000 poster!

/ Kurt



 
 
Martin (07-11-2006)
Kommentar
Fra : Martin


Dato : 07-11-06 16:20

Kurt G wrote:
> I fortsættelse af mit forrige indlæg fra 20-10 har jeg nu fået mySQL op at
> køre efter anvisningen fra Martin.

Jamen det var da dejligt at høre :)

>>Du kan i query browser, vælge import af fil, og der kan du så vælge din
>>CSV fil.
>
> HER KNIBER DET
> Jeg kan ikke finde noget sted, der tillader import af tekstfiler, eller
> import i det hele taget.
> SQL brovseren er version 1.2.4.
>
> Den fil, som jeg gerne vil importere, er en flad *.txt-fil med semikolon som
> seperator.
>
> Kan jeg med en Query læse en tekstfil og sætte de enkelte linier ind som
> poster?

Ja - Godt spørgsmål!
De har godt nok lavet query browser om siden sidst jeg brugte det.

Så vi må vist lige lave det i ren SQL istedet.

Først så skal vi have oprettet en tabel.
Her der gælder det om at vide hvor mange og hvilke kolonner der skal
være i tabellen.

Vi starter med en ganske simpel eksempel

4 kolonner
ID: 1 int(11) auto increment med primær nøgle
Test1: varchar(255) [tekstfelt med max 255 tegn]
Test2: varchar(255)
Tid: datetime [mm-dd-yyyy tt:mm:ss]

Denne laver man på denne måde:

CREATE TABLE test (
ID INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
Test1 VARCHAR( 255 ) NOT NULL ,
Test2 VARCHAR( 255 ) NOT NULL ,
Tid DATETIME NOT NULL
);

Smid den ind i det hvide felt i query browser - og tryk på execute, og
bummelum du har nu en tabel :)

Men nu får du måske en fejl... Database ikke valgt - så før alt det, så
skal du lige smide en
USE <database>;
ind

Nu skal du selvfølgelig også lave en tabel som passer til det du skal bruge.
Lidt forskellige datatyper som kan bruges findes altid i manualen
<http://dev.mysql.com/doc/refman/5.0/en/data-types.html>

Nu skal vi så til import af csv filer.
Først så vil jeg da lige anbefale dig at lære manualen* (den er svær at
forstå, men kig lidt på den og få en fornemmelse af hvad der sker
nedenstående)

LOAD DATA INFILE "<din fil>"
INTO TABLE <din tabel>
FIELDS TERMINATED BY ","
OPTIONALLY ENCLOSED BY ""
LINES TERMINATED BY "\\r\\n";'

I sidste linje, der er står \\r\\n i virkeligheden der betyder det
faktisk kun \r\n, men da \ er et specieltegn, så skal det lige escapes,
og escape karakteren i MySQL er standard \ - Derfor \\r\\n.

> Jeg vil nødigt til at skrive det ind selv, der er knap 42.000 poster!

Kan jeg godt forstå - men lav en fil med måske 100 poster - så går det
lidt hurtigere i test perioden :)

* Manual: <http://dev.mysql.com/doc/refman/5.0/en/load-data.html>

Søg
Reklame
Statistik
Spørgsmål : 177455
Tips : 31962
Nyheder : 719565
Indlæg : 6408149
Brugere : 218880

Månedens bedste
Årets bedste
Sidste års bedste