Palme Skrevet 25. mars 2008 Del Skrevet 25. mars 2008 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
LordjOX Skrevet 25. mars 2008 Del Skrevet 25. mars 2008 (endret) 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 25. mars 2008 av LordjOX Lenke til kommentar
Palme Skrevet 26. mars 2008 Forfatter Del Skrevet 26. mars 2008 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
LordjOX Skrevet 26. mars 2008 Del Skrevet 26. mars 2008 Måtte du manuellt gjøre om .csv fila di til sql setninger da? Med mindre du laget et script som tok seg av det så høres det tungvint ut. Alternativt har mysql en kommando som heter source , den leser også sql filer inn til databasen. Lenke til kommentar
Palme Skrevet 26. mars 2008 Forfatter Del Skrevet 26. mars 2008 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå