[SQL] word en jpeg bestanden in database zetten

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Bruinbaard
  • Registratie: November 2007
  • Laatst online: 21-08 19:11
Hallo allemaal,

Ik werk met mysql workbench en mijn bestanden staan op een mysql server en nu probeer ik word en jpeg bestanden in mijn tabellen op te nemen.
Ik probeerde het eerst met een blob maar dit wil maar niet lukken.
Hoe kan ik dit het beste doen?
Vind het erg lastig om info te vinden over hoe dit gaat, op w3schools.com word ik ook niet echt veel wijzer

Acties:
  • 0 Henk 'm!

  • Miyamoto
  • Registratie: Februari 2009
  • Laatst online: 18:55
Volgens mij is men het er over het algemeen over eens dat je dergelijke bestanden niet in een MySQL tabel moet opslaan, maar gewoon als bestand buiten je database.

Verder heb ik geen idee hoe ver je bent en wat er niet wil lukken, dus hier een tutorial: Blobbing-Data-With-PHP-and-MySQL. (Google: mysql jpeg blob)

[ Voor 0% gewijzigd door Miyamoto op 08-06-2009 15:30 . Reden: Typefout ]


Acties:
  • 0 Henk 'm!

  • LinuX-TUX
  • Registratie: December 2003
  • Laatst online: 17-09 13:27
offtopic:
We hebben een tweaker uit Schipluiden gevonden :+


Wat heb je zoal geprobeerd om het erin te krijgen? Houd je ook bij wat voor soort bestand je blobt? (filetype) en stream je het netjes terug via PHP naar het correcte bestandstype?


Als ik een beetje efficient een paar argumenten gooi in Google kom ik namelijk genoeg sites met uitleg tegen:
Google
http://www.devarticles.co...-Data-With-PHP-and-MySQL/

Met andere woorden, waar loop je tegenaan dat het fout gaat in de blob (opslaan of het terug lezen)
edit:
W00t, persoon boven mij heeft EXACT hetzelfde te pakken via google *O*

[ Voor 5% gewijzigd door LinuX-TUX op 08-06-2009 15:31 ]


Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

Miyamoto schreef op maandag 08 juni 2009 @ 15:30:
Volgens mij is men het er over het algemeen over eens dat je dergelijke bestanden niet in een MySQL tabel moet opslaan, maar gewoon als bestand buiten je database.
Niet iedereen is het daarover eens. Volgens, onder vele anderen, deze presentatie zijn er een aantal (mijns inziens hele goede) redenen om images en andere blobs juist *wel* in de database op te slaan:

[quote]
  • Transactions (!!!)
  • Replication
  • Backups
  • Access control (!!!)
  • OS Portability
Waarbij ik de voor mij belangrijkste redenen met (!!!) heb aangegeven. Wanneer je serieus met je applicatie aan de gang gaat zijn dat erg belangrijke zaken. Voor een huis, tuin en keuken php script op een shared hosting site wellicht wat minder belangrijk.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • cariolive23
  • Registratie: Januari 2007
  • Laatst online: 18-10-2024
@Gerco: Het maken van backups zou ik juist als reden noemen om de bestanden _niet_ in de database op te slaan. De backups worden overdreven groot terwijl de files niet veranderen. Een differential backup is met een database niet (eenvoudig) te maken.

De andere punten zijn overigens wel sterke punten, niks mis mee. Het heeft dus zo zijn voor- en nadelen om files in een database op te slaan. Per situatie kan de gewenste oplossing anders zijn.

Acties:
  • 0 Henk 'm!

  • Saeverix
  • Registratie: Maart 2002
  • Laatst online: 13:02
Ik ben inderdaad ook van mening om geen bestanden in een database op te slaan. Ik zie het als onnodige belasting van de database-server.

Zoals rooot al zei: Plaats te bestanden gewoon op de server in een aparte map en plaats vervolgens een verwijzing naar dat bestand in de database.

People who live in glass houses shouldn't throw stones.


Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
SQL Server 2008 heeft overigens een mooie optie voor het opslaan van bestanden: Filestreams (zie: reviews: SQL Server 2008: een vooruitblik). De bestanden worden wel op het filesystem opgeslagen, maar ze maken integraal onderdeel uit van de database. Je hebt dus wel bijvoorbeeld ondersteuning van transacties en security, maar niet de nadelen van het opslaan van grote bestanden in een database.

/offtopic.

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:15

Janoz

Moderator Devschuur®

!litemod

cariolive23 schreef op maandag 08 juni 2009 @ 15:46:
@Gerco: Het maken van backups zou ik juist als reden noemen om de bestanden _niet_ in de database op te slaan. De backups worden overdreven groot terwijl de files niet veranderen. Een differential backup is met een database niet (eenvoudig) te maken.
Het voordeel van de data in de database is dat het een geheel vormt. Bij losse opslag heb je twee verschillende backups die vervolgens onderling nog helemaal niet synchroon hoeven zijn. Stel dat er tijdens de backup items toegevoegd worden. Het kan best zijndat deze dan wel in de DB backup zit, maar niet in de FS backup, of andersom.


Ik ben trouwens erg benieuwd waar iedereen toch dat idee vandaan haalt dat een database niet bedoeld schijnt te zijn voor het opslaan van data. In veel RMDB implementaties worden BLOB's sowieso al buiten de B+ tree opgeslagen waardoor je al snel in de situatie zit die P_de_B aanhaalt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Nou, 'vroeger' was er behoorlijke overhead en waren er performanceissues. SQL Server 7 had er indertijd wel moeite mee. Ik denk dat het daar een beetje weg komt. Tegenwoordig zijn de voordelen in mijn ogen een stuk groter dan de nadelen.

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

cariolive23 schreef op maandag 08 juni 2009 @ 15:46:
@Gerco: Het maken van backups zou ik juist als reden noemen om de bestanden _niet_ in de database op te slaan. De backups worden overdreven groot terwijl de files niet veranderen. Een differential backup is met een database niet (eenvoudig) te maken.
Dan moet je toch eens ernstig naar je backup strategie kijken. Met een file-based backup tool gaat dat inderdaad problemen opleveren, maar een backup tool die voor je database gemaakt is zou daar geen enkel probleem mee moeten hebben.

Nu heb je op de gemiddelde PHP host natuurlijk weinig te kiezen kwa backups en andere tooling, dus daar kan het een argument zijn. Voor een business critical applicatie zou ik het echter wat serieuzer aanpakken :)

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 19-09 11:12
Ik vraag me zo af nu ik dit lees en de meesten zeggen dat je het dan toch in de database "kan" gaan opslaan, zorgt dat dan niet voor performance-verlies? Daarmee bedoel ik dus op dit moment, of is het reeds zo ver dat het niet meer uitmaakt..

Ben er eigenlijk wel benieuwd naar!

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:15

Janoz

Moderator Devschuur®

!litemod

P_de_B schreef op maandag 08 juni 2009 @ 16:00:
Nou, 'vroeger' was er behoorlijke overhead en waren er performanceissues. SQL Server 7 had er indertijd wel moeite mee.
Dan hebben we het ook over een server uit de vorige eeuw van een toko waarvan het op dat moment nog redelijk ver van de core business was ;).

Toch kan ik me herinneren dat ik begin deze eeuw wel dergelijke oplossingen geimplementeerd had met SQL-Server, maar dat zal dan wel de 2000 variant geweest zijn. Wij hebbe iig nooit echt performance problemen kunnen ontdekken (tenminste, niet in dat deel).

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Fuzzillogic
  • Registratie: November 2001
  • Laatst online: 01-07 22:34
Bruinbaard schreef op maandag 08 juni 2009 @ 15:24:
Hallo allemaal,

Ik werk met mysql workbench en mijn bestanden staan op een mysql server en nu probeer ik word en jpeg bestanden in mijn tabellen op te nemen.
Ik probeerde het eerst met een blob maar dit wil maar niet lukken.
Hoe kan ik dit het beste doen?
Vind het erg lastig om info te vinden over hoe dit gaat, op w3schools.com word ik ook niet echt veel wijzer
Hmm, je zult toch wel enige kennis van SQL en de database nodighebben om dit goed te doen. Als je een library gebruikt waarbij je de SQL-statements inclusief data als string doorgeeft dan zul je de binaries moeten escapen. Maar eerlijk gezegd vind ik dat sowieso een ranzige (en gevaarlijke) methode en kun je je beter richten op libraries waar statements en data apart worden doorgegeven en waar je je niet druk hoeft te maken over escaping. Daarnaast zul je hoe dan ook met indices aan de slag moeten.

Binaries in DB's opslaan heeft zeker voordelen, en ik gebruik het zelf ook veelvuldig. Maar doe het alleen als het echt handiger is, en niet omdat je denkt dat dat zo moet.

Acties:
  • 0 Henk 'm!

  • cariolive23
  • Registratie: Januari 2007
  • Laatst online: 18-10-2024
Gerco schreef op maandag 08 juni 2009 @ 16:00:
Dan moet je toch eens ernstig naar je backup strategie kijken. Met een file-based backup tool gaat dat inderdaad problemen opleveren, maar een backup tool die voor je database gemaakt is zou daar geen enkel probleem mee moeten hebben.
Leg dan eens uit hoe je met een mysqldump (we hebben het hier over MySQL) een differential backup van jouw database kan maken. Ik ben nieuwsgierig hoe je dat zou doen, ik heb echt geen flauw idee. De handleiding is ook niet behulpzaam, noemt deze mogelijkheid niet.

Een file based backup van je database is geen goed plan, dat gaat mislukken. Databases hebben niet voor niets backuptools, het is de enige manier om veilige backups te maken.

Acties:
  • 0 Henk 'm!

  • Bruinbaard
  • Registratie: November 2007
  • Laatst online: 21-08 19:11
Hmm dit klinkt allemaal een beetje ingewikkeld....
Ik moet voor informatica op school een database oprichten op een al van te voren klaargemaakte mySQL server.
Ik kan voorderest ook niet zelf bestanden daar op uploaden voor zover ik weet.
Er is een php pagina waarop ik moet inloggen en daar kan ik dan query's invoeren.
Ik heb degene die het serverbeheer doen gevraagd of ze op die pagina ook een mogelijkheid kunnen aanmaken om bestanden op de server te uploaden.
Ook mijn leraar kwam er niet helemaal uit hoe het nou zat met die blobs.
Hij weet heel erg veel van databases alleen niet zozeer van bestanden op een database zetten volgens mij.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 00:16

Matis

Rubber Rocket

Dit is toch al vaker aan de orde geweest?

\[PHP5/MySQL] Afbeeldingen opslaan in database

Er zijn pro's en con's (zoals altijd), maar wanneer jij overtuigt bent van deze mogelijkheid moet je er zeker voor gaan!

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Bruinbaard
  • Registratie: November 2007
  • Laatst online: 21-08 19:11
LinuX-TUX schreef op maandag 08 juni 2009 @ 15:30:
offtopic:
We hebben een tweaker uit Schipluiden gevonden :+
wat is er bijzonder aan een tweaker uit schipluiden ??? Kom jij ook uit schipluiden?

maarja anyway:
hoe sla ik dan precies word en jpeg bestanden op in een blob/ hoe maak je er een blob van.
Of hoe link ik naar een bestand op de database(wat voor type? gewoon varchar lijkt me niet werken) als ik de mogelijkheid eenmaal heb om bestanden op de server te zetten. Als ik google kom ik eigenlijk alleen maar oplossing met php tegen maar die mogelijkheid heb ik dus niet, ik heb alleen toegang tot een veld waarin ik SQL query's kan intikken, en tabellen kan laten weergeven.

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 17:50

TeeDee

CQB 241

Zonder PHP (of welke taal dan ook) zal het vrij lastig worden om het in ieder geval te tonen.
Waarom heb je geen beschikking over PHP (of welke taal dan ook)?

Het linken naar een bestand is vrij makkelijk te doen, alleen ook met een script- of programmeertaal. Volgens mij kan hetgeen wat jij wil (op basis van de huidige informatie) niet.

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 19-09 11:12
Je hebt inderdaad een programmeertaal nodig om iets te laten weergeven, die het zo voor je kan gaan rederen, met de MySQL console gaat het renderen daarom ook niet lukken.

Acties:
  • 0 Henk 'm!

  • Bruinbaard
  • Registratie: November 2007
  • Laatst online: 21-08 19:11
Ik ken html en php vind ik ook wel te begrijpen.
Voorderest heb ik een basis van SQL kennis.
Alleen ik kan dus niet zelf op de server aan de slag met php omdat ik geen administrator daarvan ben.
Zou jullie graag een screenshot van wat ik kan doen laten zien alleen kan nu om de een of andere reden de server die op school staat niet benaderen, waarschijnlijk staat ie uit *sigh

Acties:
  • 0 Henk 'm!

  • doeternietoe
  • Registratie: November 2004
  • Laatst online: 17:02
Bruinbaard schreef op maandag 08 juni 2009 @ 20:37:
Ook mijn leraar kwam er niet helemaal uit hoe het nou zat met die blobs.
Hij weet heel erg veel van databases alleen niet zozeer van bestanden op een database zetten volgens mij.
Ik betwijfel het.

Je hebt de opdracht een database te ontwerpen voor het uploaden van bestanden.

Wat mij betreft is de opdracht ambigu, ze willen of:

- Een database-model zien waar alle data inclusief bestanden staan OF
- Een database-model met een verwijzing naar de bestanden op de server.

Aangezien je leraar blijkbaar niet weet hij blob werkt, zal het wel het laatste zijn. Het vage is alleen dat je je model nooit zult kunnen testen omdat je geen scripts kunt installeren.

Overigens, ik heb een aantal jaren geleden ook eens een project gedaan waarbij bestanden (afbeeldingen in dat geval) in een database moesten worden opgeslagen. Dat geef zulke extreem slechte performance (meer dan factor 10 trager), dat we het snel hebben veranderd in een simpele verwijzing naar een pad op het bestandsysteem. Het was wel op een oude versie (4.x vermoed ik) van MySQL, dus waarschijnlijk is er wel iets verbeterd.
Pagina: 1