Jump to content
php.lv forumi

CSV uz MySQL


atari

Recommended Posts

Ja gribi vienkārši ignorēt, tad izvēlies kādu kolonu un piešķir viņu pašu sev.

INSERT INTO test VALUES (dati) on duplicate key update kolonna10=kolonna10;

 

Tikai atceriews, ka tiek salīdzināta tā kolonnu kombinācija, kurām ir primary key. Tavā gadījumā tā būs otrā.

 

 

Tpfu, ja gribi ignorēt, ieliec vienkārši IGNORE:

INSERT IGNORE INTO test VALUES (dati);

 

 

Ja gribi kaut ko updeitot esošajām kollonām, tad tev jānorāda ko:

INSERT INTO test VALUES (dati) ON DUPLICATE KEY UPDATE kolonna1=dati1, kolonna3=dati3, kolonna9=kolonna9+1;

Edited by codez
Link to comment
Share on other sites

Vispār tev nederēs gan tas on dublicate.

 

Tev tās rindas baigi daudz ? Varbūt vienkārši dari kā Klez rādīja.

ir datubaze vārdā 'datubāze' taja ir viena tabula vārdā 'test' taja test tabula ir 10 lauki tā arī saucas lauki (1,2,3,4,5,6,7,8,9,10), no 1-9 ir pāris vārdi izņemot otraja unikāls kods, bet 10 lauka būs kādi 10-15 vārdi. Tas augšējais, manis postētais kods vispār tjā lietā neder, ko man vajag? To uzraku meklējot guglē CSVtoSQL.

Edited by atari
Link to comment
Share on other sites

tev to failu vajag saglabaat ???

maini visu laiku vinjam nosaukumu.

liec nosaukumaa time() veertiibu

un buus tev visas veestures ...

nu tad rakstīsies katru reizi viss pa jaunu un ieraksti saglabāsies katru reizi, neskatories uz to jau iepriekšējo reizi kad palaists skripts tādi jau ierakstījās ieks datubāzes, taja CSV faila ir (kā to varētu izprast mysql) 10 kolonnas, varu pafantazēt lai izprastu |vards|unikaals_kods|vards3|vards4|vards5|vards6|vards7|vards8|vards9|vards10|. katru reizi ka tas skripts nolasīs CSV failu taja var rasties izmaiņas, teiksim būs tā aptuveni 30% vecāko lauku nemainīsies, bet sākuma lauki tajā CSV failā kādi 70% būs jauni, tas var mainīties 50%-50%, 80%-20% utt. mēģināšu tūlīt codez variantu par on duplicate key update liekas ļoti saprotami, pat man, malacis par paskaidrojumu!

Edited by atari
Link to comment
Share on other sites

tā arī saucas lauki (1,2,3,4,5,6,7,8,9,10)

Sorry, par iebraucienu drusku ne pa tēmu, bet šito es arī nekad neesmu varējis saprast kā var taisīt tādus kolonu nosaukumus :OOOOOO

Tas ir tikpat kā bāzt galvu labprātīgi cilpā, nu vienkārši nenormāli prasās pēc bugiem ;)

 

Update tablea set '1' = 2

Update tablea set '1' = '2'

 

vai piemēram

 

select 1 from tablea

select '1' from tablea

 

Gints Plivna

http://datubazes.wordpress.com

Link to comment
Share on other sites

Sorry, par iebraucienu drusku ne pa tēmu, bet šito es arī nekad neesmu varējis saprast kā var taisīt tādus kolonu nosaukumus :OOOOOO

Tas ir tikpat kā bāzt galvu labprātīgi cilpā, nu vienkārši nenormāli prasās pēc bugiem ;)

 

Update tablea set '1' = 2

Update tablea set '1' = '2'

 

vai piemēram

 

select 1 from tablea

select '1' from tablea

 

Gints Plivna

http://datubazes.wordpress.com

Kolonnu nosaukumi koes rakstīju ir kā piemērs, ja Tu domā: |vards|unikaals_kods|vards3|vards4|vards5|vards6|vards7|vards8|vards9|vards10| it kā tādas kollonas ir CSV faila un attiecīgi kas tajās ir rakstīts ierakstās datubāzes tabulā test šajās kolonnās (1,2,3,4,5,6,7,8,9,10)

Link to comment
Share on other sites

peec kaa tu tos datus skaties ?

var mainiities vienai rindai kaut kaadi lauki?

vai klaat var naakt tikai jauna rinda?

ja klaat var naakt tikai jauna rinda, tad skaties peec taa unikaalaa koda ...

ja taada nav tad rindu ievieto.

 

a ja var mainiities jebkursh lauks tad droshi vien vajag to ar DUPLICATE KEY

Link to comment
Share on other sites

peec kaa tu tos datus skaties ?

var mainiities vienai rindai kaut kaadi lauki?

vai klaat var naakt tikai jauna rinda?

ja klaat var naakt tikai jauna rinda, tad skaties peec taa unikaalaa koda ...

ja taada nav tad rindu ievieto.

 

a ja var mainiities jebkursh lauks tad droshi vien vajag to ar DUPLICATE KEY

katrai rindai iekš CSV faila un attiecīgi ieraksti tabulas kolonnās mainās katru reizi, nekas nav vienāds, bet ir "vecās" kuras nevajag mainīt/rakstīt vēlreiz pa jaunu/dajebko/likt mierā/un punkts/basta , CODEZ mos iesaki, ka lai šeit: INSERT INTO test VALUES (dati) on duplicate key update nedara neko ar to kolonnu rindu; , ja kāds lauks sakrīt; piemēram:

tikko palaists tas php skripts un tabulā ierakstījās ar daudziem citiem ierakstiem šis te:

 

|vards|unikaals_kods|vards3|vards4|vards5|vards6|vards7|vards8|vards9|vards10| un laižam nakamreiz to skriptu tad ja tajā CSV failā atkal ir šā te rindiņa:

 

|vards|unikaals_kods|vards3|vards4|vards5|vards6|vards7|vards8|vards9|vards10| tad liekam to mierā neko nedaram, t.i. pats galvenais nerakstam to vēlreiz.

 

pagaidām nekas nesanāk.

Edited by atari
Link to comment
Share on other sites

Kad nedara neke? Ja sakrīt pilnīgi visi lauki? Vai tikai unikaals_kods?

Ko darīt gadījumā, ja unikaals_kods sakrīt, bet citi lauki atšķirās?

Nu tik smalki jau ir pa glauno, bet to nevajag, būtība ir tāda, ka to skriptu palaižot pirmo reizi ierakstās tabulas kolonnās ieraksti, palaižot nākamreiz to skriptu, tas atkal nolasa CSV failu, bet ar jau izmaiņām(jauniem ierakstiem, kas ir CSV failā) un atkal izveido ierakstus tabulas kolonnās, bet tādi jau ir no pirmās reizes palaišanas. Saproti ērtāk laikam ir salīdzinat pēc nezinu jebkā, kas jau ir kolonnās, vienalga kāds tabulas kolonas lauks, bet tikai lai neizveidojas vēl tāds, ja jau viens ir. . Problēmas kopsavilkums redzams bildē šeit: http://www.ht2.lv/bildes/kopsavilkums.jpg

 

p.s. ceru pēc bildes palika skaidrāks, labi, var palikt pie tā, ja kaut viens no CSV faila laukiem sakriīt ar jau esošo kas ir kādā no datubāzes kolonām (varu pateikt priekšā, ja skaritīs, tad sakritīs visi, bet nu kā php vai mysql ir ērtāk nezinu) , tad viss nerakstam to pa jaunu (kā ir tagad, manā nelaimīgā php skriptā), lai tas kaut kur gaisā karājas, nezinu, nahrenizēt bez jūtām, tikai ne datubāze, pietiek, ka viens tāds ieraksts tur jau ir.

Edited by atari
Link to comment
Share on other sites

×
×
  • Create New...