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

Batch & Shell

Powershell - Dateien vergleichen und ergänzen

Frage von Franz-Josef-IIBatch & Shell11 Kommentare

Guten Tag Ich bin wieder einmal bei meiner CSV dran und hänge :-( trotz Google und Co Ausgangslage ist ...

Neue Wissensbeiträge
Humor (lol)
(Part num your Hacked phone. +XX XXXXXX5200)
Erfahrungsbericht von Henere vor 1 TagHumor (lol)4 Kommentare

Mein Handy hat aber ne ganz andere Endnummer. Muss ich mir jetzt Sorgen machen ? :-) Vielleicht betrifft es ...

Exchange Server

Letztes Update für Exchange 2016 CU9 war in gewisser Weise destruktiv

Erfahrungsbericht von DerWoWusste vor 1 TagExchange Server6 Kommentare

Kurzer Erfahrungsbericht zu Exchange2016-KB4340731-x64 Der Exchangeserver hat wie gewöhnlich versucht, es in der Nacht automatisch zu installieren - abgesehen ...

Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 2 TagenErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Vmware
VMware Updates gegen L1 Lücke
Information von sabines vor 3 TagenVmware

Für die Vmware Produkte vCenter Server, ESXi, Workstation und Fusion stehe Updates bereit um die L1 Lücke zu schließen. ...

Heiß diskutierte Inhalte
Netzwerke
Netzwerk-Architektur mit VLANs
Frage von niLuxxNetzwerke14 Kommentare

Liebe Community, Ich hätte eine kurze Frage an euch. Ich werde in Kürze das Netzwerk unserer (sehr) kleinen Firma ...

Webbrowser
Neuer Tab Firefox
gelöst Frage von BleifussWebbrowser12 Kommentare

Hallo, via Strg + T öffnet man ja einen neuen Tab. Gibt es die Möglichkeit, dass der Tab sich ...

Windows Server
2 DCs Hierarchie umkehren
Frage von TuberPlaysWindows Server11 Kommentare

Hallo, wir hatten bisher 1 Domain Controller in einer VM. Nun kam noch ein zusätzlicher Domain Controller auf einem ...

Windows Server
WSUS nach Upgrade - kein Start mehr
gelöst Frage von Ghost108Windows Server9 Kommentare

Hallo zusammen, habe einen Windows Server 2012 welcher als WSUS dienst. Jetzt wurde ein Upgrade auf Server 2016 durchgeführt ...