Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Datei per Batch in Datenbank speichern

Frage Entwicklung Batch & Shell

Mitglied: 20535

20535 (Level 1)

23.11.2005, aktualisiert 29.11.2005, 6314 Aufrufe, 18 Kommentare

Guten Morgen zusammen,

ich habe folgendes Problem.

Ich benötige eine Batch Datei die eine Datenbankverbindung aufbaut. Das ist soweit klar. Anschließend muss in die Datenbank einiges geschrieben werden, das ich über eine fertige SQL Datei machen kann. Das Problem ist jetzt aber, in ein Feld in der Datenbank muss der Inhalt einer beliebigen Datei, zB Powerpoint Präsentation oder eine Excel Datei. Bin mir derzeit nicht sicher ob das Problem auf MySQL Ebene zu lösen ist, oder auf Batch Ebene.

Lieben Gruß,
Stephan
Mitglied: 16640
23.11.2005 um 12:37 Uhr
hallo Stephan,

'MySQL' ist nicht die DB, mit der ich mihc normalerweise beschäftige - aber Du wirst sicherlich nicht den Inhalt von Powerpoint- oder Excel-Dateien in einer Datenbank speichern wollen, sondern die Dateien selbst. Stichwort dazu: Datentyp BLOB (Binary Large OBject). In den BLOB-Datenfeldern kannst Du alles an binären Objekten ablegen, was Du greifen kannst.
Wenn Du die Tabelle entsprechend definiert hast, wirst Du sicherlich das ganze aus einer Batchdatei heraus abwickeln können.

Gruß
dba
Bitte warten ..
Mitglied: 20535
23.11.2005 um 14:27 Uhr
Hallo dba,

ja, sicherlich die Datei selber, "Inhalt" hat vielleicht ein bisschen Verwirrung gestiftet.
Die Datenbank an sich steht ja und der Feldtyp ist Blob. Das eigentliche Problem ist, wie lese ich die binäre Datei ein und kriege sie anschließend in das entsprechende Datenbankfeld über die Kommandozeile.
Kenne mich leider mit Batch Dateien nicht so gut aus. Ich habe versucht das mit FOR /F zu machen, das scheint aber nur mit Textdateien zu gehen. Und sich irgendwie den Dateiinhalt mit TYPE ausgeben lassen bringt mich im Moment auch nicht weiter.

Gruß,
Stephan
Bitte warten ..
Mitglied: Guenni
24.11.2005 um 06:54 Uhr
@20535

Hi,

alles auf Kommandozeilenebene.

Wechsle in das Verz., in dem sich deine Dateien befinden.

Erstelle eine Datei, z.B. dateien.txt. Inhalt der Datei könnte sein:

<font class="code">
Umsatz2005,mappe01.xls
PraesMeyer,praesmeyer.pps
</font>

Wichtig!: Letzte Zeile nicht mit Return abschließen, Cursor
hinter pps stehenlassen und abspeichern.

Erstelle eine weitere Datei, z.B. insert.sql. Inhalt der Datei:

<font class="code">
LOAD DATA
LOCAL INFILE 'dateien.txt'
INTO TABLE tabellenname(feldname1,feldname2)
FIELDS TERMINATED BY ",";
</font>

Wenn deine Tabelle eh' nur 2 Felder hat, kannst du die Angabe der Spaltennamen
weglassen.

Starte nun den mysql-Monitor, event. mit vollem Pfadnamen, z.B. c:\mysql\mysql
oder wo immer du mysql installiert hast.

Wenn der Monitor gestartet ist, gibst du einen Backslash gefolgt von einem Punkt ein,
ein Leerzeichen, dann den Dateinamen des Scripts zum Einlesen:

mysql>\. insert.sql, dann Enter.

Hoppla, vorher natürlich zur Datenbank wechseln: mysql> \u Datenbankname, sorry.

Anschließend läßt du dir mit select * from tabellenname den Inhalt ausgeben, welcher
sein müßte(die zwei Datenfelder betreffend):

<table border="1">
<tr>
<td>feldname1</td><td>feldname2</td>
</tr>
<tr>
<td> Umsatz2005</td><td> mappe01.xls </td>
</tr>
<tr>
<td> PraesMeyer</td><td> praesmeyer.pps</td>
</tr>
</table>


Gruß
Günni
Bitte warten ..
Mitglied: 20535
24.11.2005 um 08:17 Uhr
Guten Morgen,

hmmm, danke Günni, immerhin was dazu gelernt. Aber leider nicht das was gesucht ist.
In deinem Bespiel habe ich jetzt den Dateinamen in dem Datenbankfeld. Was da aber rein muss ist die Datei selber. Deswegen ist der Datenbankfeldtyp ja auch Blob =)

Gruß,
Stehan
Bitte warten ..
Mitglied: Guenni
24.11.2005 um 08:31 Uhr
@20535

Hi,

nicht nur der Dateiname ist in dem BLOB-Feld enthalten, auch die Datei selber.

Das select zeigt dir nur an, dass die Datei gespeichert wurde. Anzeigen kannst
du sie natürlich nur in einem Web-Browser z.B. über ein PHP-Script.

Brauchst du dazu auch noch Hilfe?

Gruß
Günni
Bitte warten ..
Mitglied: 20535
24.11.2005 um 08:37 Uhr
Achso, hatte mal eben nach LOAD DATA gegoogelt weil ich den Befehl nicht kannte und da kam bei einem kurzen Überblick das Gefühl, dass das nur mit Flatfiles geht.
Dann werde ich das gleich mal probieren, dankeschön!
Bitte warten ..
Mitglied: 20535
28.11.2005 um 10:45 Uhr
Hallo Zusammen,

leider will es immer noch nicht so recht.

Bei mir lädt er immer nur den Dateinamen in das Blobfeld aber nicht den Dateiinhalt.

<font class="code">LOAD DATA LOCAL INFILE 'file.txt' INTO TABLE db_file
FIELDS TERMINATED BY ','
(DB_FILE_ID,FILE_SIZE, CONTENT);
</font>

<font class="code">file.txt:
11,231654,test.xls
</font>

anschließend steht nun in der tabelle db_file in der Spalte Content:
<font class="code">00000000h: 74 65 73 74 2E 78 6C 73 ; test.xls
</font>
sprich, nur der Dateiname.

Habe ich vielleicht irgendetwas übersehen?

Gruß,
Stephan
Bitte warten ..
Mitglied: 15034
28.11.2005 um 11:01 Uhr
Was passiert denn, wenn Du das manuell über das MySQL Control Center machst? Hast Du dann die Dateim im Feld?


Gruss Peter

http://www.administrator.de/index.php?mod=show_public_profile&nr=15 ...
Bitte warten ..
Mitglied: 20535
28.11.2005 um 11:05 Uhr
Hi,

Ja, wenn ich die Datei über ein GUI in das Feld uploade beinhaltet sie die gesamte Datei.

Gruß,
Stephan
Bitte warten ..
Mitglied: 15034
28.11.2005 um 11:18 Uhr
EI dann gehe mal auf sysinternals.com und lade Dir den Filemonitor runter, starte diesen und schau mal im Protokoll, ob während der Verarbeitung der Batch das zu importierende File angezogen wird. Kannst mir auch das LOG mal senden.

Gruss Peter
mailto:troubleni@arcor.de
Bitte warten ..
Mitglied: 20535
28.11.2005 um 11:41 Uhr
Also laut Filemonitor wird die Datei test.xls nicht angerührt. Lediglich die Batch Datei, die file.txt und die insert.sql.
Bitte warten ..
Mitglied: 15034
28.11.2005 um 11:47 Uhr
... das dachte ich mir! Dann musst nur noch herausfinden warum. Ich denke einmal darüber nach, falls Du vorher die Lösung hast, lasse es mich wissen!
Bitte warten ..
Mitglied: 20535
29.11.2005 um 09:01 Uhr
Ich würde ganz einfach behaupten, dass LOAD DATA gar nicht den Dateiinhalt läd, wieso auch. Nirgendwo steht, dass dieser Befehl das tun sollte.
Daher brauche ich eine andere Lösung
Bitte warten ..
Mitglied: 15034
29.11.2005 um 09:10 Uhr
Genau, das habe ich beim Reproduzieren des Problems auch festgestellt. Ich suche nun nach einer anderen Lösung!

Gruss Mummenschanz
(dies ist auch meine skype-ID)
Bitte warten ..
Mitglied: 15034
29.11.2005 um 12:19 Uhr
Hallo schau mal hierhin:

16.3. Ist es sinnvoll, Bilder in einer Datenbank abzulegen?


http://www.php-faq.de/q/q-db-blob.html
Bitte warten ..
Mitglied: 20535
29.11.2005 um 12:50 Uhr
Darum geht es hier nicht ;)
Es ist nur ein kleiner Part eines riesen Projekt eines führenden Pharmaciekonzerns. Ob es sinvoll ist oder nicht spielt keine Rolle. Ich muss die Dateien nur da rein kriegen.

Gruß,
Stephan
Bitte warten ..
Mitglied: Biber
29.11.2005 um 14:21 Uhr
Moin Talyr,
wenn ich mich als alter Bätch-Anwender auch mal einmengen darf...

Wenn Daten oder in diesem Fall Dateien in ein BLOB-Feld gespeichert werden sollen, ist die Mimik -relativ unabhängig von der verwendeten Programmiersprache- IMHO gleich:
- der Dateiinhalt wird Zeichen für Zeichen und von Dateianfang bis Dateiende binär in eine Variable gelesen,
- diese Variable wird in das BLOB-Feld geschrieben.

Die merkwürdigen Wunschträume dort oben... *kopfschüttel*... da könntest Du mehr Erfolg mit einem "copy c:\*.* Mysql\Blobfeld" haben...

Worauf ich hinauswollte: unter purem Batch kann es nicht gehen, weil es gar nicht möglich ist, derart große Dateien in Umgebungsvariablen mit einer Maximallänge von 255 Zeichen zu speichern. Ende.

Somit bleiben zwei weitere Möglichkeiten:
a) Du treibst irgendwo ein Utililty auf, das "WriteFileIntoMySQLBlob.exe" heißt und sich von der Konsole aus starten lässt. Halte ich für ausgeschlossen, dass es so etwas gibt. Macht wenig Sinn.
b) Du befüllst die MYSQL-DB via PHP, VB, C oder meinetwegen BASIC .. halt irgendeine Sprache mit MySQL-API und der Möglichkeit, Dateien binär einzulesen.

In einer dieser Sprachen dann ein Funktionspärchen PutFileIntoBlob()/GetFileFromBlob() zusammenzubraten, das wiederum schaffen wir hier im Forum.
Mit was greifst Du denn normalerweise auf MySQL zu?

Grüße Biber
Bitte warten ..
Mitglied: 20535
29.11.2005 um 14:40 Uhr
Das habe ich mir schon fast gedacht. Ich habe halt geschaut ob das mit einfacher Batch möglich ist oder nicht, da ich mir dachte, dass es sonst etwas oversizied wäre. Muss ja nur der Inhalt in das Blob :D

Da die Anwendung an sich in Java geschrieben ist, werde ich dann wohl darauf zurückgreifen.

Dennoch vielen Dank für die Hilfe.

Gruß,
Stephan
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch Datei mit einer Datenbank verknüpfen
Frage von cenguiniBatch & Shell7 Kommentare

Also, Leute. Ich habe ein Problem. Undzwar bei uns in der Firma werden verschiedene Notebooks immer neu aufgesetzt, sprich ...

Verschlüsselung & Zertifikate
Zertifikatsinformationen in Datenbank speichern
gelöst Frage von CitronellaVerschlüsselung & Zertifikate2 Kommentare

Hallo allerseits, ich habe eine Frage: Ist es möglich beim Erstellen eines selbsterstellten Zertifikates oder nach der Erstellung folgende ...

Batch & Shell
Batch-Problem Inhalt aus Datei auslesen, bearbeiten und dann wieder speichern
gelöst Frage von AllForOne94Batch & Shell9 Kommentare

Hallo Com, Ich habe eigentlich ein relativ simples Problem. Meine Ausgangsdatei ist so aufgebaut: 0,00h 1,00h 2,18h 3,00h 4,00h ...

Batch & Shell
Batch: In Quelldatei Wert aus Liste ersetzen und Datei speichern unter
gelöst Frage von MTB4everBatch & Shell2 Kommentare

Hallo, ich habe folgendes vor: Ich habe eine Quell Datei z.B. 0000.csv in dieser Datei steht in Zeile 1 ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 5 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 9 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware8 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...