Archief - MYSQL: phpmyadmin - max records

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

[E.I]Magic

Legacy Member
Ik heb een vraagje over MYSQL databases.

Wat is het maximum aantal records dat je kan invoegen?
Of is dit niet gelimiteerd?

Ik vraag dit omdat ik een lijst gekregen heb van 2.000.000 artikelen om in een database to steken.
Kan dit allemaal in 1 tabel?

Indien dit niet kan, hoe los ik dit best op?

Thx..

taLa.

Legacy Member
Een lijst van 2 miljoen zou ik nu niet direct via phpMyAdmin doen, alhoewel ge daar in principe geen probleem mee zou mogen ondervinden. Ik zou het alleszins via de command line doen.

killgore

Legacy Member
cmd-line lijkt me ook de iets betere polossing.

maar bij zo gigantische hoeveelheden raad ik wel aan eens te kijken naar welke storage engine je gebruikt. Ik raad dan toch sterk innodb aan ipv het gebruikelijke myisam (bij innodb gaat wel je insert-tijd wrsch iets langer zijn, read-tijd zal normaal wel stuk optimaler zijn als je je PK's goed instelt).

[E.I]Magic

Legacy Member
Hoe moet je precies te werk gaan om het via de command line te doen?

Alvast bedankt voor de hulp

killgore

Legacy Member
normaal gaat inserten ook via mysqldump.exe (te vinden in je bin dir).

Lord Kveldulv

Legacy Member
killgore zei:
normaal gaat inserten ook via mysqldump.exe (te vinden in je bin dir).

Het zou maar triestig en not-done zijn moest ge zo'n db op ne windowsbak draaien, om dan nog maar te zwijgen over productie omgevingen.

De vraag is eigenlijk in welke vorm de data aangeleverd wordt? XML? CSV? ...?

killgore

Legacy Member
jah, k, effe nie aan gedacht toen ik ging opzoeken (zat zelf op windowsbak :$), excuus.

XML wordt bij mijn weten niet ondersteund, hoewel ge daar mssch ook tools vo kunt vinde. CSV's wel iirc. Snu wel een tijke geleden da tik dat heb gedaan.

Lord Kveldulv

Legacy Member
killgore zei:
jah, k, effe nie aan gedacht toen ik ging opzoeken (zat zelf op windowsbak :$), excuus.

XML wordt bij mijn weten niet ondersteund, hoewel ge daar mssch ook tools vo kunt vinde. CSV's wel iirc. Snu wel een tijke geleden da tik dat heb gedaan.

Zelf import scriptje schrijven he. Perl of desnoods php. Meeste leveranciers leveren hun data aan in XML en das ook nog gemakkelijk te behandelen, alleen zien da ge performante code schrijft. Wij krijgen opt werk zo XML's van 40mb... per product. En dan steekt 4GB ram snel vol :p
Realtime producten updaten wordt dan ook heel simpel. Wij zitten met 10 000, welliswaar zeer uitgebreidde, producten om onze website. Ben curieus van wa aard 2 000 000 producten zijn en hoe die onderhouden gaan worden? :)

[E.I]Magic

Legacy Member
Wel, dat vraag ik me ook af....
Voeg bijvoorbeeld eens aan ieder product een afbeeldingske toe...

Nu, ik heb enkel ervaring met phpmyadmin...

Wat zou de beste manier zijn? Ik kan dan wat opzoekingswerk doen..

Alvast bedankt!

Lord Kveldulv

Legacy Member
Nogmaals: in welke vorm krijgt ge de data aangeleverd?
Ge kunt niet alles zomaar importeren he.
Trouwens, phpmyadmin is een php app die (liefst) op ne apache draait. Maw heeft ook een beperking qua max file size dat ge kunt uploaden. En stel dat ge uw producten krijgt in ne schone csv met 1 prijs en een productcode van 5 cijfers en ne titel van max 255 chars. Dan nog gaat da misschien honderden mb's zijn. Phpmyadmin gaat u daar niet mee kunnen helpen vrees is, tenzij ge manueel uw producten gaat opsplitsen per 20 000 of zo. En dan wil ik ook nog wel es zien of ge da bestand met 2 000 000 records openkrijgt op uwe pc met excel of notepad of whatever ;)
Maar dat is maar een gissing aangezien ge maar schaars zijt met informatie :)

fromalk

Legacy Member
hangt van een aantal factoren af,

zoals je zegt;

moet elke waarde in de db ook een foto of een link naar een foto etc bevatten?
hoe wordt u data aangeleverd?
wat voor een server gebruik je en kan je ssh etc inloggen voor via de command line te werken?

hoe groot zijn de verschillende velden per rij?

Cycloon

Legacy Member
phpmyadmin geeft het vrij snel op bij grotere bestanden. Ooit een back-up van 60MB proberen terug zetten in 1 keer en het was al een probleem. Ik vermoed dat uw bestand met 2 miljoen records zeker groter dan 60MB zal zijn :)

[E.I]Magic

Legacy Member
Ik heb 1 gigantisch tekstbestand met 2.000.000 rijen, opgedeeld als volgt

YA4JH2174L01 GRAPHIC SET 2 30.18 G

Dus,
Bestelnummer: A4JH2174L01
Titel: GRAPHIC SET 2
Prijs: 30.18
Beschikbaarheid: G

In het tekstbestand staan de items wel mooi in tabellen.

Of er nu afbeeldingen bij moeten of niet, dat is mijn zaak niet, mijn opdracht is om die lijst in de DB de pompen.

Het enige dat ik weet is dat het Linuxhosting is en ik (bij mijn weten) enkel over phpmyadmin beschik...

Btw, het bestand is 195MB zwaar..

Wat zou een ideale manier zijn? Ik kan het gerust laten vragen aan het hostingbedrijf, maar ik moet wel weten wat ik moet vragen natuurlijk :)

In ieder geval, den dikke merci voor de hulp...

Gr

Lord Kveldulv

Legacy Member
Aiaiai op een gewone hosting die ge zelf niet beheert...
Als ge een control panel hebt lijk CPanel kunt ge misschien wel iets uitvoeren via command line of desnoods ne cron (eenmalig).
Ge gooit uw bestand op de ftp. Dan schrijft ge een import scriptje. Is poepsimpel in feite, kwartierke werk (been there, done that so many times before alleen nie voor 2 000 000 records :p). Ge leest lijn per lijn in en hopelijk zit die delimiter goed en kunt ge veldje per veldje uitlezen. En dan meteen ne sql insert query uitvoeren. Bouw er eventueel een beveiliging in zodat moest em ergens stoppen dat ge bij ne retry geen dubbels gaat maken. En dat voert ge dan via command line uit (dus via uw control panel als die een command line module heeft of via eenmalige cron). Is gewoon 'php mijnscriptje.php' aanroepen, in de veronderstelling dat ge niet te veel restricties hebt.
Kzou da ook pas 's nachts doen omdat da ne serieus en vooral langdurige load op de mysqld zal veroorzaken. Kan gemakkelijk een paar uur duren en alle sites op die server zullen daar last van ondervinden, int slechtste geval onbereikbaar worden. Ne admin zal uw scriptje uiteraard killen als hij het ziet, dus die best ook verwittigen.
Als de opmaak van het bestand in orde is kunt ge het ne admin vragen te doen. Is vrij simpel met ne load data local infile ... into table blablabla. Dat is idealer maar hoort eigenlijk niet bij de taken van uwe host dus heel vriendelijk vragen :)

[E.I]Magic

Legacy Member
Bedankt voor de uitvoerige uitleg Lord K.!

Wel, ik ken de beheerder van de site goed, en als ik me niet vergis is het een volledige server die hij huurt...
Alleen, van de hosting kant van dit werk heb ik niet veel verstand..

Dus, eigenlijk moet ik eerst toegang tot het control panel krijgen?
Daar kan ik dan zien wat de mogelijkheden zijn?

Het zou wel ideaal zijn moest ik die ene gigantische file in een keer kunnen toevoegen zonder te moeten foefelen..

Lord Kveldulv

Legacy Member
Als ge ssh toegang hebt zit ge al goed (als ge dat kunt verkrijgen :)), aangezien ge dat beter aan de command line laat draaien dan in ne browser. Moest ge voor een script gaan. Via control panel is laatste optie, als dat al nie beperkt is in het control panel.
Als ge de beheerder goed kent, zeker vragen of hij het niet voor u wilt doen met ne "load data ..." (zie mysql.com voor syntax) direkt in de command line client. Dat is speciaal daarvoor gemaakt en dus zowieso de beste keuze (voor zover ik daarover kan oordelen met de details dat ge hier gegeven hebt ;)). Maar kheb bij ne gewone host nog nooit geweten dat ge daar zelf aan kunt.
Kzeg nie dat da gaat werken zonder de file te zien. Post anders eens een tiental records uit uwe file als ge er aan kunt, dan kan ik da met zekerheid zeggen.

[E.I]Magic

Legacy Member
Code:
ho   08kh1        Kurzarm Hemd Gr.s                                                        32.90 D
Ho   08kh2        Kurzarm Hemd Gr.m                                                        32.90 D
Ho   08kh3        Kurzarm Hemd Gr.l                                                        32.90 D
Ho   08kh4        Kurzarm Hemd Gr.xl                                                       32.90 D
Ho   08kh5        Kurzarm Hemd Gr.xxl                                                      32.90 D
Ho   08lh1        Langarm Hemd Gr.s                                                        37.45 D
Ho   08lh2        Langarm Hemd Gr.m                                                        37.45 D
Ho   08lh3        Langarm Hemd Gr.l                                                        37.45 D
Ho   08lh4        Langarm Hemd Gr.xl                                                       37.45 D
Ho   08lh5        Langarm Hemd Gr.xxl                                                      37.45 D

En zo gaat de lijst verder.

Ik denk wel dat ik toegang kan krijgen tot alles..
Maar ik weet niet goed tot wat ik toegang moet krijgen :)

[E.I]Magic

Legacy Member
Ik heb goed nieuws (denk ik ;))

Ik kan aan een access database geraken met de volledige lijst er in.

Nu, ik heb een tooltje gevonden die een access db omzet naar een mysql db.
Dus zou moeten mogelijk zijn om de database lokaal op te zetten, in mysql.
Hoe krijg ik die zo doeltreffend mogelijk op de server dan?

En nog iets.. Hoe neem ik in godsnaam een backup van de database met zoveel records?

Gr

Edit: Met dat progje kan ik een access db ook converteren naar queries!

Lord Kveldulv

Legacy Member
\t als delimiter? Textbook example voor ne import te doen :)
Wat ge nodig hebt. Als ik het zou doen hebt ge het volgende nodig:
- ssh toegang tot de server, hoeft geen root te zijn
- toegang tot de mysql command line client, maw ge moet het volgende kunnen doen
login as: kveldulv
[email protected]'s password:
Last login: Fri Aug 10 23:08:48 2007
[kveldulv@Gorgo ~]$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9 to server version: 4.1.20

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use torrentflux;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> load data local infile ect ect
Wa int vet staat moet ge intypen, en aanpassen naar uw username, db, ect.
Voor ne load data heb ge mogelijk wel meer user rights nodig dan uwe host u gegeven heeft op uw account. Maar da moet ge met hem regelen, of hem laten doen.
- Juiste syntax van load data vindt ge hier: http://dev.mysql.com/doc/refman/5.0/en/load-data.html
Tis echt piece of cake. Ge moet alleen zien dat ge genoeg user rights hebt. En 2 000 000 records is nie min. Dus gene paniek als da ding niemeer reageert. Hij is wel bezig en zal terug responsive worden wanneer em gedaan heeft. Kan wel lang duren. Ik durf nie zeggen 30 min of 3h. Tzal er tussen liggen. Dermee ook 's nachts doen want andere klanten op dien server gaan da nie graag hebben.

Allé bon, ben weer te veel tegelijk bezig en ge hebt al gepost sinds da'k hier ben beginnen typen :p

Access naar mysql converteren zou ik nooit doen. Ik geloof niet in die performantie dat da scriptje in het ontwerp van de tables kan steken. Zoiets doet ge nog altijd best zelf.
Maar als ge kunt converteren naar insert statements dan hebdet het. Die queries in ne txt steken. Opsplitsen dat die nie te groot is qua mb's en dan kunde da wel door ne phpmyadmin jagen (maar ik blijf erbij dat mijn oplossing hierboven de beste is :p).

ps. denkt ook aan uw indexen. Of gewoon performance int algemeen als ge da later moet gaan displayen ;)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan