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, 6335 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

Inhalt einer .txt als eine Variable setzen mit Batch

gelöst Frage von AlexIOTBatch & Shell3 Kommentare

Hallo Zusammen, In der Variable.txt steht immer nur ein einziger Rechnername! - wie folgt: EW085IDFV001 Ich möchte das dieser ...

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 ...

VB for Applications

Inhalt einer Textbox in eine .txt Datei schreiben

gelöst Frage von Just4fun1990VB for Applications4 Kommentare

Hallo Administrator.de User, ich habe jetzt schon sehr lange gesucht und finde leider nichts. Hier allerdings habe ich gute ...

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 ...

Neue Wissensbeiträge
LAN, WAN, Wireless

UniFi - UAP Antenna Radiation Patterns - WLAN Ausstrahlungsmuster

Information von StefanKittel vor 7 StundenLAN, WAN, Wireless

Hallo, wer sich schon immer mal gefragt hat wie der Unterschied in den WLAN Access Points bei Unifi wirklich ...

Windows Userverwaltung

Passwortwechsel in der Domain bei Anmeldung erzwingen

Anleitung von Looser27 vor 17 StundenWindows Userverwaltung6 Kommentare

Nachdem es immer wieder User geschafft haben, sich während des laufenden Betriebes auszusperren, habe ich nach einer Möglichkeit gesucht, ...

Ausbildung

Linux-Ausstieg in Niedersachsen - Windows statt Bugfix

Information von StefanKittel vor 3 TagenAusbildung40 Kommentare

Sind ja nur Steuergelder

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 5 TagenSpeicherkarten6 Kommentare

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Passwortwechsel Zeitpunkt festlegen
gelöst Frage von Looser27Windows Userverwaltung32 Kommentare

Guten Morgen liebe Kolleginnen und Kollegen, da es eine Userin in meinem Urlaub geschafft hat, sich vom AD vollständig ...

Microsoft
Netzlaufwerksordner Berechtigungen Speichern unter aus Programmen
gelöst Frage von ITler7Microsoft19 Kommentare

Moin, bin in ein neues Unternehmen eingetreten und habe die Anforderung bekommen Berechtigungen auf einige Ordner anzupassen, da bisher ...

Windows Server
Probleme im AD am Außenstandort
gelöst Frage von emeriksWindows Server19 Kommentare

Hi, wir haben ein Problem mit AD und GPO am Außenstandort und ich stehe momentan mächtig auf dem Schlauch. ...

Flatrates
Geschwindikeitsprobleme zwischen 1 und 1 - Vodafone Heimnetz
Frage von muenchhausenFlatrates15 Kommentare

Moin erstmal, Vorweg mein Setup 1. Wohnsitz Vodafone 400K Leitung (kommt sogar komplett an, auch um 18 Uhr) 2. ...