Vinnaren i pepparkakshustävlingen!
2023-03-23, 23:44
  #1
Medlem
Kottkompotts avatar
Sitter på en CSV-fil på över 2 miljoner rader som ska in i en databas.
Har försökt att ta bort duplicerade rader med SQL, men MariaDB är inte jättepigg på vissa lösningar.

Det finns några rader som ställer till det, där kolumn 1 och 2 tillsammans ska vara unika och kunna utgöra primärnyckel sedan.
Filen verkar vara för stor för pandas att hantera, får alltid något error på en för stor integer.
Har försökt iterera över dokumentet en gång för varje rad, men insåg snabbt att det bara var dumt då det är för mycket begärt att be python iterera ungefär 5.290.000.000.000 gånger och bli färdig innan pensionen.

Det är ingen högprecisionsuppgift, så ifall det skulle vara ena eller andra duplikatet som egentligen stämmer så gör det inget om det blir fel. Bara kopiorna försvinner så att jag kan bygga vidare databasen och ordna med främmandenycklar.
Den ska ändå uppdateras igen om kanske ett halvår eller så, och vid det laget har jag förhoppningsvis fått bättre pli på datainsamlingen för att undvika sådant där.
Hur kan jag lämpligen åtgärda detta?
__________________
Senast redigerad av Kottkompott 2023-03-23 kl. 23:46.
Citera
2023-03-23, 23:56
  #2
Medlem
Citat:
Ursprungligen postat av Kottkompott
Sitter på en CSV-fil på över 2 miljoner rader som ska in i en databas.
Har försökt att ta bort duplicerade rader med SQL, men MariaDB är inte jättepigg på vissa lösningar.

Det finns några rader som ställer till det, där kolumn 1 och 2 tillsammans ska vara unika och kunna utgöra primärnyckel sedan.
Filen verkar vara för stor för pandas att hantera, får alltid något error på en för stor integer.
Har försökt iterera över dokumentet en gång för varje rad, men insåg snabbt att det bara var dumt då det är för mycket begärt att be python iterera ungefär 5.290.000.000.000 gånger och bli färdig innan pensionen.

Det är ingen högprecisionsuppgift, så ifall det skulle vara ena eller andra duplikatet som egentligen stämmer så gör det inget om det blir fel. Bara kopiorna försvinner så att jag kan bygga vidare databasen och ordna med främmandenycklar.
Den ska ändå uppdateras igen om kanske ett halvår eller så, och vid det laget har jag förhoppningsvis fått bättre pli på datainsamlingen för att undvika sådant där.
Hur kan jag lämpligen åtgärda detta?
Ett effektivt är att skapa unika index på kolumnerna och sen felhanterar du duplicate-fel vid import från fil till databas, och hoppar över den duplicerade raden, eller ersätter den förra raden.

https://www.mariadbtutorial.com/mari...-unique-index/

https://stackoverflow.com/questions/...lock-in-python
Citera
2023-03-24, 00:08
  #3
Medlem
Kottkompotts avatar
Citat:
Ursprungligen postat av Binary
Ett effektivt är att skapa unika index på kolumnerna och sen felhanterar du duplicate-fel vid import från fil till databas, och hoppar över den duplicerade raden, eller ersätter den förra raden.

https://www.mariadbtutorial.com/mari...-unique-index/

https://stackoverflow.com/questions/...lock-in-python
Insåg nu att jag tabbade mig som vanligt.
Hade glömt att sätta semikolon som delimiter när pandas läste in den, så då fungerade det och var snabbt som rackarn.

Nu har jag bara bekymret med när i hela friden databasen är färdig med sin truncate.
Varför det tar över 25 minuter att radera en tabell vet jag inte, men någonting är ju muppigt...
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