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

Text formatierung mit mehr als 31 Tokens

Frage Entwicklung Batch & Shell

Mitglied: dax4fun

dax4fun (Level 1) - Jetzt verbinden

13.09.2014, aktualisiert 20:08 Uhr, 1132 Aufrufe, 7 Kommentare, 1 Danke

Einen schönen guten Morgen wünsche ich,
suche nach einer Lösung für dieses Problem
.csv
01.
  
02.
2014-09-10 00:05:00.0000,2,749497002,1,2,501,2070,4141,2635,3623,2415,1981,301,2548,1621,2229,1485,4294,2760,1302,3513,4831,3220,2576,1656,3312,401,2898,1932,3680,2366,4732,3011,1102,2760,2341,1505,3011,1916,2635,702,"N",2014-09-10 01:55:02.0000 
03.
2014-09-10 00:10:00.....
soll zu formatiert werden
.sql
01.
UPDATE RESULTTABLE set 
02.
EVENTTIME='2014-09-10 00:05:00', 
03.
EVENTNUMBER=2, 
04.
FIRST=1, 
05.
SECOND=2, 
06.
GRODD_00=1200, 
07.
GRODD_01=1201, 
08.
......usw. 
09.
GRODD_55=4205, 
10.
TRANS_FLAG='N', 
11.
LAST_ACCESS='2014-09-10 01:55:02' 
12.
where EVENTTIME='2014-09-10 00:05:00';
wie kann ich die Zeichenkette erstellen, da mir bei der for Schleife die Tokens und Laufvariablen ausgehen.

habe leider kein Script da ich zum x mal von neu angefangen hab und immer wieder einen anderen Weg versuchte somit jetzt nur Müll im Ordner
Mit freundlichen Grüßen
dax
Mitglied: Lochkartenstanzer
13.09.2014, aktualisiert um 09:23 Uhr
Zitat von dax4fun:

2014-09-10 00:05:00.0000,2,749497002,1,2,501,2070,4141,2635,3623,2415,1981,301,2548,1621,2229,1485,4294,2760,1302,3513,4831,3220,2576,1656,3312,401,2898,1932,3680,2366,4732,3011,1102,2760,2341,1505,3011,1916,2635,702,"N",2014-09-10 01:55:02.0000

Sind die Zeilen immer gleich aufgebaut oder variiert die Anzahl der Werte in der Zeile?

wenn ja, dann kann ich Dir (g)awk empfehlen.

Tip:

echo "1,2,3" | gawk -F ","  ' {  print "p1 " $1 "\np2 " $2 "\np3 " $3 "\n" } '
lks

PS: Man kann in gawk-Skripten auch Schleifen bauen, falls die Zeile variabel lang wäre.
Bitte warten ..
Mitglied: colinardo
13.09.2014, aktualisiert um 11:45 Uhr
Moin,
oder mit Powershell auch kein Hexenwerk. Da deine Quell-CSV nicht so ganz mit deinem gewünschten Output korreliert (z.B. Anzahl der GRODD Werte etc), habe ich es mal an die CSV-Daten angepasst, hoffe die Zuordnung ist OK ?!.
01.
$header = (1..43) -join "," 
02.
$result = @() 
03.
$csv = Import-Csv "C:\input.csv" -delimiter "," -Header $header 
04.
$csv | %{ 
05.
 $result += 'UPDATE RESULTTABLE set' 
06.
 $result += "EVENTTIME='$(($_.1).Split(".")[0])'," 
07.
 $result += "EVENTNUMBER=$($_.2)," 
08.
 $result += "FIRST=$($_.3)," 
09.
 $result += "SECOND=$($_.4)," 
10.
 0..35 | %{ 
11.
  $result += "GRODD_$(("0$_").Substring(1))=$($_.($_ + 5))," 
12.
13.
$result += "TRANS_FLAG='$($_.42)'," 
14.
$result += "LAST_ACCESS='$(($_.43).Split(".")[0])'" 
15.
 $result += "where EVENTTIME='$(($_.1).Split(".")[0])';" 
16.
17.
$result | Set-Content "c:\output.sql"
ob die Zuordnung der Spalten jetzt so stimmt musst du selber überprüfen.

Grüße Uwe
Bitte warten ..
Mitglied: rubberman
13.09.2014 um 14:31 Uhr
Hallo.

Mit Batch pur etwa so.
01.
@echo off &setlocal EnableDelayedExpansion 
02.
>"C:\output.sql" ( 
03.
  for /f "usebackq tokens=1-5* delims=," %%g in ("C:\input.csv") do ( 
04.
    echo UPDATE RESULTTABLE set 
05.
    for /f "delims=." %%m in ("%%g") do ( 
06.
      echo EVENTTIME='%%m', 
07.
      set "eventtime=%%m" 
08.
09.
    echo EVENTNUMBER=%%h, 
10.
    echo FIRST=%%j, 
11.
    echo SECOND=%%k, 
12.
    set "line=%%l" 
13.
    for /l %%m in (100 1 135) do ( 
14.
      for /f "tokens=1* delims=," %%n in ("!line!") do ( 
15.
        set "c=%%m" 
16.
        echo GRODD_!c:~-2!=%%n, 
17.
        set "line=%%o" 
18.
19.
20.
    for /f "tokens=1,2 delims=," %%m in ("!line!") do ( 
21.
      echo TRANS_FLAG='%%m', 
22.
      for /f "delims=." %%o in ("%%n") do ( 
23.
        echo LAST_ACCESS='%%o' 
24.
25.
26.
    echo where EVENTTIME='!eventtime!'; 
27.
28.
)
Auch hier vorausgesetzt dass "GRODD_55" ein Schreibfehler war, da dein Beispiel nur 36 Werte beinhaltet.

Grüße
rubberman
Bitte warten ..
Mitglied: dax4fun
13.09.2014, aktualisiert um 18:02 Uhr
einen wunderschönen guten Tag,

ja mein Fehler GRODD_55 ist kein Schreibfehler es ist folgendes und es ist xp (powershell ??)
01.
 
02.
UPDATE RESULTTABLE set 
03.
EVENTTIME='2014-09-10 00:05:00', 
04.
EVENTNUMBER=2, 
05.
FIRST=1, 
06.
SECOND=2, 
07.
GRODD_00=1234, 
08.
GRODD_01=1342, 
09.
GRODD_02=2234, 
10.
GRODD_03=1234, 
11.
GRODD_04=1234, 
12.
GRODD_05=1234, 
13.
GRODD_10=1234, 
14.
GRODD_11=1234, 
15.
GRODD_12=1234, 
16.
GRODD_13=1234, 
17.
GRODD_14=1234, 
18.
GRODD_15=1234, 
19.
GRODD_20=1234, 
20.
GRODD_21=1234, 
21.
GRODD_22=1234, 
22.
GRODD_23=1234, 
23.
GRODD_24=1234, 
24.
GRODD_25=1234, 
25.
GRODD_30=1234, 
26.
GRODD_31=1234, 
27.
GRODD_32=1234, 
28.
GRODD_33=1234, 
29.
GRODD_34=1234, 
30.
GRODD_35=1234, 
31.
GRODD_40=1234, 
32.
GRODD_41=1234, 
33.
GRODD_42=1234, 
34.
GRODD_43=1234, 
35.
GRODD_44=1234, 
36.
GRODD_45=1234, 
37.
GRODD_50=1234, 
38.
GRODD_51=1234, 
39.
GRODD_52=1234, 
40.
GRODD_53=1234, 
41.
GRODD_54=1234, 
42.
GRODD_55=1234, 
43.
TRANS_FLAG='N', 
44.
LAST_ACCESS='2014-09-10 01:55:02' 
45.
where EVENTTIME='2014-09-10 00:05:00';
1234 sind natürlich nur zufällige platzhalter
ich hab das nicht gepostet da ich dachte es ist ein einfacher Weg wenn z.B. eine Maske aus einer Datei verwendet wird
01.
.csv 
02.
2014-09-10 00:10:00..... 
03.
maske.txt 
04.
UPDATE RESULTTABLE set 
05.
EVENTTIME=, 
06.
EVENTNUMBER=, 
07.
FIRST=, 
08.
SECOND=, 
09.
.sql 
10.
UPDATE RESULTTABLE set 
11.
EVENTTIME=2014-09-10 00:10:00, 
12.
EVENTNUMBER=2, 
13.
FIRST=1, 
14.
SECOND=2,... 
15.
.csv ---> maske.txt --->.sql
@Lochkartenstanzer
werd ich mir anschauen da ich die csv mit fsql bekomme und dann mit isql wieder einfüge
hab etliche Programme gefunden aber fast bei keinen kann ich ein export wieder importieren als (update).
Mit freundlichen Grüßen
dax
Bitte warten ..
Mitglied: rubberman
LÖSUNG 13.09.2014, aktualisiert um 20:08 Uhr
Hallo dax4fun.

ja mein Fehler GRODD_55 ist kein Schreibfehler es ist folgendes und es ist xp (powershell ??)
Bahnhof ohne Punkt und Komma

Finden sich denn nun immer 56 Werte in einer Zeile (neben Datum & Co.) oder kann die Anzahl variieren?

Grüße
rubberman
Bitte warten ..
Mitglied: dax4fun
13.09.2014, aktualisiert um 20:13 Uhr
@rubberman
tut mir leid, daran sieht man wie ich das handhabe "es wird schon irgendwie gehen" was fatat ist beim programmieren,

ich hoffe ich werde eine zweite csv auch damit umbasteln können, soll ja auch was davon haben ;)

Danke das erste script hab ich getestet es gibt die GRODD_00 bis 35 aus und schaut gut aus bis auf halt meine fehlende Angabe
UPDATE:
funktioniert super !! hab halt einfach die Schleife für den jeweiligen Bereich mehrfach kopiert
for /l %%m in (105 1 110) do (........................for /l %%m in (110 1 115) do ( usw......
for /f "tokens=1* delims=," %%n in ("!line!") do (
set "c=%%m"
echo GRODD_!c:~-2!=%%n,
set "line=%%o"
)
)

ich sehe jetzt was ich machen würde .....verzweifelt for /l %%m in (00 1 10) do ( herumprobieren

Danke
dax
Bitte warten ..
Mitglied: colinardo
14.09.2014, aktualisiert um 12:30 Uhr
Zitat von dax4fun:
es ist xp (powershell ??)
kein Thema, auch unter XP läuft die Powershell(2.0)
Windows Management Framework (Windows PowerShell 2.0, WinRM 2.0 und BITS 4.0)

Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Bedingte Formatierung für einen Text in Word 2013
gelöst Frage von adm2015Microsoft Office14 Kommentare

Das ist jetzt zwar keine Administrative Frage aber vielleicht hat trotzdem jemand eine Idee. Ich habe einen sehr langen ...

E-Mail
Problem mit Text-Formatierung in Outlook 2010 Signatur
Frage von FightfoX90E-Mail2 Kommentare

Hallo liebe Community! Ich habe ein Problem beim Erstellen einer Outlook-Signatur. Ein Beispiel wie es aussehen sollte und wie ...

Windows 7
Fehler LAN-Treiber Code 31
gelöst Frage von AkcentWindows 71 Kommentar

Hallo, bin nun seit vielen Stunden am Suchen, googlen und testen. Wir haben auf einem Rechner den Norman Endpoint ...

Batch & Shell
Warum Funktioniert der tokens befehl nicht
gelöst Frage von DomiZone1Batch & Shell5 Kommentare

Hallo liebe Administartor Community Ich Beis gleich in mein nicht vorhandenes lenkrad :D der befehl: for /f "delims=: tokens1,2" ...

Neue Wissensbeiträge
MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 5 StundenMikroTik RouterOS4 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 6 StundenSicherheit

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Information von admtech vor 8 StundenAdministrator.de Feedback9 Kommentare

Hallo Administrator User, mit dem Release 5.7 haben wir unsere Startseite überarbeitet und die Beiträge und Fragen voneinander getrennt. ...

Vmware

VMware Desktopprodukte sind verwundbar

Information von Penny.Cilin vor 13 StundenVmware

Die VMware-Anwendungen zum Umgang mit virtuellen Maschinen Fusion, Horizon Client und Workstation sowie die Plattform NSX sind verwundbar. Davon ...

Heiß diskutierte Inhalte
Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail
Frage von ahstaxVisual Studio24 Kommentare

Hallo, ich möchte gerne ein vb.net-Tool schreiben, das am Ende eine Outlook-E-Mail erzeugt. Grundsätzlich ist mir klar, wie das ...

Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server16 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows Netzwerk
Netzwerk Neustrukturierung
Frage von IT-DreamerWindows Netzwerk16 Kommentare

Hallo verehrte Community und Admins, bei uns im Haus steht eine Neustrukturierung an. Dafür benötige ich von euch ein ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...