![]() |
hjälp med STOOOOOR databas.
Hej,
en kund till mig har ett problem som jag inte riktigt vet hur jag ska lösa.. så här är system uppbyggd (vilket fungerade bra i början med en liten db) 1. Kunden tankar ner ex excelfil från FTP. (excelfil innehöll MAX 100,000 rader) 2. Kunden laddar upp filen via ett adminsystem som konvererar excelfilen till en MSSQL databas. (Konvertering gjordes så att för varje rad skapa den den in stor sträng som med en ända sql insert, inserta hela ändringen) 3. via admingränsnittet kan kunden nu köra SQL förfrågning direkt mot databasen. Men nu är det så att leverantören som levererar denna excelfil har ändrats lite och innehåller nu bokstavligen 10,000,000 (10 miljoner!!) rader med ca 60-70 Kolumner per rad. Bästa approachen för situationen letas... kom med förslag... |
Försök att få leverantören att leverera en xml,json,csv så att du kan parsa den korrekt och scripta ihop en inmatning till databasen.
|
Prova Bulk Insert i sql server
Om du behöver jämföra med befintliga poster, stoppa in datat i separat tabell och testa med upsert-tekniken: http://www.databasejournal.com/featu...erver-2008.htm |
Vad får du för problem med den större filen?
Har du en OpenXML excelfil så spelar det inte så stor roll om de byter format. Förvisso är den väl lite mer verbose än ren data-xml men skillnaden lär inte bli stor. Annars är det bara att se till att köra importen som ett bakgrundsjobb och köra bulk inserts programmatiskt (testa dig fram vilket antal rader per insert som blir snabbast, det varierar med data-strukturer, db-mjukvara och hårdvaran). Ska datan in i en tom tabell så är det ofta också en rejäl boost att lägga på indexen i tabellen först efter datan lagts in. Men det förutsätter ju att du vet att datan inte ger någon konflikt med indexen. |
Citat:
10M rader för en hemmaserver är inte jättemycket. Vill mycket till om du ska märka skillnad på 1M rader å 100M. Citat:
|
Citat:
Kundens server timar ut. |
Citat:
|
10 miljoner rader med usla index osv., ja då kan man få problem men annars så är 10 miljoner rader i sig inte så värst mycket. 60-70 kolumner i en tabell tycker jag tyder på dålig modellering.
Se över index, jag kan mycket väl tänka mig att du har en flaskhals här. Vad är det för databasmotor? |
Hur ofta göra denna uppdatering??
Selects är säkert 10 ggr snabbare än inserts. Gör om så att bara rader som är förändrade läggs in. Alt be leverantören om en spara bara de poster som är uppdaterade. |
Alla tider är GMT +2. Klockan är nu 06:43. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson