Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 1101 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
Excel (2016): Enthaltenen Text suchen (2)

Frage von ralfkausk zum Thema Microsoft Office ...

Webentwicklung
gelöst Foto Upload und Default Text einfügen (12)

Frage von smackee zum Thema Webentwicklung ...

Microsoft Office
gelöst Excel VBA In Userform Maske Text nach Eingabe löschen (1)

Frage von kluthi69 zum Thema Microsoft Office ...

Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
POS Hardware und alternativen zu Raid 1? (21)

Frage von Brotkasten zum Thema Festplatten, SSD, Raid ...

Viren und Trojaner
Verschlüsselungstrojaner simulieren (18)

Frage von AlbertMinrich zum Thema Viren und Trojaner ...

Ubuntu
gelöst Nextcloud 12 Antivirus App for Files (10)

Frage von horstvogel zum Thema Ubuntu ...

SAN, NAS, DAS
+100tb Storagelösung (10)

Frage von Data-Fabi zum Thema SAN, NAS, DAS ...