Gå til innhold

Importere .csv-fil til eksisterende database


Anbefalte innlegg

Heisan,

 

Jeg sliter litt med å importere en .csv-fil som inneholder navn, etternavn, tlf, mail osv til en eksisterende sql database med samme struktur.

 

Kan noen hinte meg i riktig retning på hva jeg bør gjøre for å få dette til?

Lenke til kommentar
Videoannonse
Annonse

Hei,

hvilken database bruker du?

 

Uansett dette gjøres i postgres på følgende måte:

 

barcode.csv:

"1234567890242",2

"1234567890313",42

"1234567890412",13

 

Min tabell:

joakibj=> \d barcode

Table "public.barcode"

Column | Type | Modifiers

-------------+---------------+-----------

barcode_ean | character(13) | not null

item_id | integer | not null

Indexes:

"barcode_pk" PRIMARY KEY, btree (barcode_ean)

 

joakibj=> select * from barcode ;

barcode_ean | item_id

-------------+---------

(0 rows)

 

Som du ser så er tabellen tom. Det jeg vil er å få filen barcode.csv til å kopiere inn i tabellen barcode. I postgres gjøres det ved å skrive:

 

\copy barcode (barcode_ean,item_id) from ./barcodes.csv with delimiter ',' csv quote '"'

 

delimiter ',' betyr at det er en liste med hver verdi som er kommaseparert med et linjeskift som skiller mellom hver rad. csv '"' betyr at det er tekst som skal inn, typisk char(n), varchar(n), text osv datatyper. Og teksten har dobbelfnutter "rundt seg".

 

Etter at jeg har kjørt den /copy kommandoen så ser tabellen slik ut:

joakibj=> select * from barcode ;

barcode_ean | item_id

---------------+---------

1234567890242 | 2

1234567890313 | 42

1234567890412 | 13

(3 rows)

 

Akkurat det jeg ville.

 

Hvis man ikke bruker postgres så skal det også være innbakt i SQL:

 

COPY barcode (barcode_ean,item_id) FROM 'barcodes.csv' WITH DELIMITER ',' CSV QUOTE '"';

 

Sjekk din DBMS sin dokumentasjon på syntax og pass også på hva dine quote, delimiter osv tegn er.

 

Lykke til

Endret av LordjOX
Lenke til kommentar

Jeg gjorde til slutt som følger:

 

INSERT INTO tabellen_min (en_verdi,en_annen_verdi,osv,osv) VALUES ("første_verdi","andre_verdi","tredje_verdi","osv","osv")

 

Dette kjørte jeg inn i databasen min ved å:

 

 mysql -uroot -pmittpassord min_database<min_fil.sql

 

 

Det var ikke verre :)

Lenke til kommentar

Neida, det var ikke så stress. Jeg bare gjorde .csv filen om til en vanlig .sql fil for å så ligge litt noen linjer ved bruk av sed

 

noe alà dette:

 

cat min_gamle_csv-fil.sql|sed -e 's/\(.*\)/INSERT INTO min_tabell () VALUES (\1 )/'

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...