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

gelöst inhalt einer txt-datei ergänzen und als .sql abspeichern per batch

Mitglied: Torsten77

Torsten77 (Level 1) - Jetzt verbinden

18.12.2007, aktualisiert 16:56 Uhr, 6350 Aufrufe, 7 Kommentare

Hallo zusammen,

ich betreue einen Internetshop in dem Lagerbestände regelmäßig aktualisiert werden sollen.

Hierzu wird von unserem Warenwirtschaftssystem eine txt-Datei (oder csv-Datei) erstellt, in der untereinander jeweils Artikel-Nr. und Lagerbestand stehen.

Artikel, Lagerbestand

1000, 550

Diese Lagerbestände möchte ich per Batch in eine .sql-Datei umwandeln und um entsprechenden SQL-Befehle ergänzen, die dann auf den Webserver hochgeladen wird.

Die SQL sieht so aus:

update products_attributes set attributes_stock='550' where attributes_model='1000'


Davon gibt es ca. 130 Zeilen / Artikel.

Um die fertige sql-Datei per FTP hochzuladen hab ich was

  1. 1. Verbindung zum FTP Server öffnen
open ftp.server.de
  1. 2. Benutzer (myaccount ) FTP Server mitteilen
user myaccount
  1. 3. Kennwort (juhu) zum Benutzer FTP Server mitteilen
pass juhu
  1. 4. Ins Verzeichnis (shop/lager) auf dem FTP Server wechseln
cd shop/lager
  1. 5. Alte Datei (file) löschen
del file
  1. Datei (file) aus dem aktuellen lokalen Verzeichnis an den FTP Server übertragen
put file
  1. Verbindung zum FTP Server und FTP beenden
bye

Das ganze soll/wird über die geplanten Tasks unter Windows auf dem Server um 3:00 Uhr morgens ausgeführt ausgeführt.

Da ich nicht besonders Bewandert im programmieren bin, wende ich mich an Euch. Soll heißen, ich benötige eine Anleitung für DAU´s.

Vielen Dank für Eure Hilfe.

Gruß

Torsten
Mitglied: Biber
18.12.2007 um 12:50 Uhr
Moin Torsten77,

die wesentliche Zeile, um von dem *.csv-Format zu den ausführlichen Update-Statements zu kommen, wäre am CMD-Prompt (Test Ein- und Ausgabe)
01.
(=12:39:21  D:\temp=)
02.
>for /F "tokens=1,2 delims=, " %i in (Deine.csv) do @echo update products_attributes set attributes_stock='%i' where attributes_model='%j';
03.
update products_attributes set attributes_stock='1000' where attributes_model='550';
Im Batch dann.
01.
@echo off & setlocal
02.
Set "updateStmt=update products_attributes set attributes_stock="
03.
Set "updateWhere=where attributes_model="
04.
Set "inCSV=x:\yz\meine.csv"
05.
Set "outStmt=x:\xz\meineStmts.sql"
06.
echo. >%outStmt%
07.
for /F "tokens=1,2 delims=, " %%i in (%inCSV%) do echo %updateStmt% '%%i' %UpdateWhere% '%%j'; >>%outStmt%
Grüße
Biber
Bitte warten ..
Mitglied: Torsten77
18.12.2007 um 13:19 Uhr
Echt super, vielen Dank für Deine schnelle und gut beschriebene Hilfe.

Das einzige was noch nicht ganz passt; in der Ausgabedatei habe ich noch eine Leerzeile ganz oben. Bekommt man die auch noch weg?

Vielen dank, mit so einer schnellen und guten Anwort hatte ich nicht gerechnet.

Gruß

Torsten
Bitte warten ..
Mitglied: Biber
18.12.2007 um 13:37 Uhr
Moin Torsten77,

mein Fehler - ein Leerzeichen zuviel.

In der Batchdatei
Streiche:
echo. >%outStmt%
Setze:
echo.>%outStmt%
Ich wollte ja nur eine "leere" Datei sicherstellen, alternativ ginge auch ein
if exist "%outStmt% del %outstmt%

Falls in der Quelldatei, der xxx.CSV noch überflüssige Kopfzeilen sein sollten, dann kannst Du die mit "skip=Zeilenzahl" überspringen.
for /F "tokens=1,2 delims=, " %%i ..........(jetzt)
for /F "skip=1 tokens=1,2 delims=, " %%i ..........( neu, wenn eine Zeile übersprungen werden soll)

Wenn es läuft, dann mach einen Haken dran bitte.

Grüße
Biber
Bitte warten ..
Mitglied: Torsten77
18.12.2007 um 13:51 Uhr
Hallo Biber,

das hat das (von mir nicht erwähnte) Leerzeichen in der Leerzeile entfernt, sorry. Die Zeile ist aber noch immer da.

Versteckte Kopfzeilen etc. sind nicht vorhanden. Wenn ich den entsprechenden Vorschlag von Dir einbinde, wird der 1. Datensatz entfernt. Das ist es also nicht.

Vielen Dank für Deine Hilfe.

Gruß

Torsten
Bitte warten ..
Mitglied: bastla
18.12.2007 um 14:39 Uhr
Hallo Torsten77!

Hast Du auch die andere von Biber beschriebene Möglichkeit, also
01.
if exist %outStmt% del %outStmt%
als Ersatz für die Zeile
01.
echo.>%outStmt%
versucht?

Grüße
bastla
Bitte warten ..
Mitglied: Torsten77
18.12.2007 um 16:14 Uhr
Ja hatte ich. Allerdings hat mein Editor die Groß-/Kleinschreibung verändert. Dadurch wurde die Zeile offensichtlich übersprungen, und die Daten immer wieder zusätzlich hintendran gehangen. Aber das Problem ist jetzt gelöst.

Vielen Dank.

Gruß

Torsten
Bitte warten ..
Mitglied: Biber
18.12.2007 um 16:56 Uhr
Danke @bastla,

ein sorry @Torsten77.

Hätte fairerweise erwähnen sollen, dass meine Skizzen ungetestet runtergetipselt sind und eigentlich immer mindestens einen Tipp- und manchmal auch Denkfehler enthalten.

Du, Torsten77 und Dein Editor, ihr seid beide absolut schuldlos.

Hier ist der Tippfehler aus meinem letzten Kommentar:
if exist "%outStmt% del %outstmt%

Auch bekannt als Error 0x666 ( "Unpaarige und deshalb in die Grütze gehende Anzahl Anführungszeichen").
Schwamm drüber.

Der Denkfehler aus dem Kommentar vorher:
Mit "echo?>datei.xyz" erzeuge ich natürlich KEINE 0-Byte-Datei.
Sondern eine mit 2 Byte Länge. Oder Breite. Egal. Größe also.
Denn bei der "Echo"-Ausgabe wird ja immer ein CRLF, ein Zeilenvorschub gratis mitgeliefert.

Aber aus meinem Nähkästchen noch mal ein Einzeiler, der wirklich eine 0-Byte-Datei erzeugt:
01.
echo Aber aus meinem Nähkästchen noch mal ein Einzeiler, der wirklich eine 0-Byte-Datei erzeugt >nul 2>Nullkomma.nix
In der Datei Nullkomma.nix sind dann wirklich getestete 0 Zeichen.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Txt Inhalt in batch variabel verwenden
gelöst Frage von quan81Batch & Shell17 Kommentare

Liebes Forum ich bin neu dabei und freu mich wenn mir jemand helfen kann. Ich versuche per .bat file ...

Entwicklung

Batch oder Powershell für .txt-Datei

gelöst Frage von freshman2017Entwicklung5 Kommentare

Hallo liebe Gemeinde, ich habe eine .txt-Datei, die aus einer Artikelnummer und einem Bildname bestehen soll. Ausgangsdatei (export.txt) ist ...

Batch & Shell

txt Listen Auswerten per Batch-Datei

gelöst Frage von Ivowie97Batch & Shell9 Kommentare

Hallo Zusammen Ich habe zwei .txt Listen mit Werten drin, die ich mit einer Batch-Datei auswerten möchte. In der ...

Windows 7

BATCH: Alter einer TXT-Datei bestimmen

gelöst Frage von ahstaxWindows 75 Kommentare

Hallo, wie bekomme ich mit einer DOS-Batch das Alter einer TXT-Datei bestimmt und lassen dann, bspw bei Alter >16h, ...

Neue Wissensbeiträge
Humor (lol)
Und wie seid Ihr gegen Cyberattacken gewappnet?
Information von DerWoWusste vor 1 TagHumor (lol)5 Kommentare

aber wo ist der Hammer? :-)

Sicherheit
Ein weiterer Microsoft-Stirnklatscher
Information von DerWoWusste vor 2 TagenSicherheit7 Kommentare

Habe gerade einen Artikel zu einem Sicherheitsproblem gefunden, welches mir zu seiner Zeit (gepatcht 2015) wohl durchgerutscht ist. Es ...

Windows 10
Upgradepfade Windows 10 LTSC
Erfahrungsbericht von Datenreise vor 2 TagenWindows 10

Nur eine kurze Info, für diejenigen, die es interessiert, da es hierzu im Netz aus nachvollziehbaren Gründen nicht allzu ...

Administrator.de Feedback
Wartungsarbeiten heute Nacht (Update)
Information von Frank vor 2 TagenAdministrator.de Feedback10 Kommentare

Hallo User, durch Umbauarbeiten in unserem Rechenzentrum (am Backbone) kann es heute Nacht (14-15.01.2019) zu kurzen Ausfällen unserer Seite ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 - kein Boot mehr nach Domänenaustritt
gelöst Frage von Ghost108Windows 1025 Kommentare

Hallo zusammen, habe hier eine Windows 10 Maschine, die ich gerne aus der Domäne austreten lassen möchte. Nach Austritt ...

Microsoft
SFirm 4.0 auf Terminalserver startet für jeden angemeldeten Benutzer diverse Dienste
Frage von Frank84Microsoft24 Kommentare

Hallo zusammen, wir verwenden Sfirm 4.0 auf einem Terminalserver (der SQL Server ist auf einem separaten Server), das Problem ...

Windows 10
VM wächst schnell von 14 auf 35 GB an - warum?
Frage von degudejungWindows 1017 Kommentare

Hallo, ich bin ein Freund schlanker VMs und setze daher gerne mit dem Erscheinen einer neuen Win10 Version - ...

Internet
Google-Suchergebnisse, Schnelleinblendung, woher kommt der Inhalt?
gelöst Frage von departure69Internet17 Kommentare

Hallo. Ich bin der Systembetreuer einer kleinen Gemeinde in Süddeutschland. Wir betreiben auch eine Leihbücherei. Eine Kundin hat letzten ...