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

CSV Datei trennen, ersten Wert beibehalten und folgende Werte mit KOMMA trennen

Frage Entwicklung Batch & Shell

Mitglied: intermde

intermde (Level 1) - Jetzt verbinden

05.09.2012, aktualisiert 10:12 Uhr, 3056 Aufrufe, 7 Kommentare

Hallo,

ich habe unterschiedliche Dateien mit dem Aufbau z.b. Test.csv

dbr;Marke
234;A
234;v
456;V
456;S
456;C
897;


daraus soll Werden

dbr;Marke
234;A,V
456;V,S,C
897;


Vielleich kann mir hier nochmal jemand helfen..

Gruß
Thoma
Mitglied: vodomohua
05.09.2012 um 13:10 Uhr
Ich würde hierfür wohl die CSV in Excel einlesen und dort die gleichen Werte zusammenführen.
Bitte warten ..
Mitglied: intermde
05.09.2012 um 14:52 Uhr
Wollte den Umweg aus Excel umgehen und alles per VBS Script erledigen lassen, da die Daten nochmalig in Access zusammen gefügt werden..
Mit Excel hab ich weitere Dokumente die laufen müssen
Bitte warten ..
Mitglied: mathe172
05.09.2012 um 18:02 Uhr
Hallo,

in der Hoffnung, dass Batch auch ok ist (zumal wir hier im Batch&Shell-Bereich sind):
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "Input=csv.csv" 
03.
set "Output=Output.csv" 
04.
<"%Input%" set /p "Header=" 
05.
for /f "skip=1 tokens=1,2 usebackq delims=;" %%A in ("csv.csv") do ( 
06.
if "!Data_%%A!"=="" set "dbrs=!dbrs! %%A" 
07.
set "Data_%%A=!Data_%%A!,%%B" 
08.
09.
>"%Output%" ( 
10.
echo.%Header% 
11.
for %%A in (%dbrs%) do echo.%%A;!Data_%%A:~1! 
12.
)
Diese Batch liest die Datei csv.csv ein (in Zeile 2 änderbar) und gibt das Ergebnis in Output.csv aus (siehe Zeile 3). Der "Header" muss dabei in der ersten Zeile der Input-Datei stehen.

MfG,
Mathe172
Bitte warten ..
Mitglied: NetWolf
05.09.2012 um 18:17 Uhr
Grüß Gott,

*grübel* die Datei wird in Access eingelesen? Dann frage ich mich, warum du die Änderung nicht gleich in Access durchführst? Den VBA - Code kannst du doch erstellen, oder?

Grüße aus München
Wolfgang
(Netwolf)
Bitte warten ..
Mitglied: bastla
05.09.2012, aktualisiert um 21:11 Uhr
Hallo intermde!

Ich reiche noch die VBS-Variante nach - aber eigentlich solltest Du doch inzwischen auch selbst schon zumindest zu einem Ansatz kommen können ...
01.
Ein = "Test.csv" 
02.
Aus = "Test_neu.csv" 
03.
Delim = ";" 
04.
 
05.
Set fso = CreateObject("Scripting.FileSystemObject") 
06.
Set d = CreateObject("Scripting.Dictionary") 
07.
 
08.
T = Split(fso.OpenTextFile(Ein).ReadAll, vbNewLine) 
09.
Ueber = T(0) 'erste Zeile übernehmen 
10.
For i = 1 To UBound(T) 'Bezeichnungen sammeln 
11.
    If Trim(T(i)) <> "" Then 'keine Leerzeile verarbeiten 
12.
        dbr = Split(T(i), Delim)(0) 'erstes und ... 
13.
        Marke = Split(T(i), Delim)(1) '... zweites Feld der Datenzeile lesen ... 
14.
        If dbr <> "" Then 
15.
            If Not d.Exists(dbr) Then '... und, falls noch nicht vorhanden, ... 
16.
                d.Add dbr, Marke '... als neuen Eintrag dem Dictionary hinzufügen; ... 
17.
            Else 
18.
                d.Item(dbr) = d.Item(dbr) & "," & Marke '... ansonsten nur "Marke" an bisherige Zeile anfügen 
19.
            End If 
20.
        End If 
21.
    End If 
22.
Next 
23.
 
24.
Daten = Ueber 'Ausgabe beginnt mit Überschrift 
25.
K = d.Keys: I = d.Items ' Werte aus Dictionary in Arrays übernehmen ... 
26.
For j = 0 To UBound(K) '... und diese zeilenweise ... 
27.
    Daten = Daten & vbNewLine & K(j) & Delim & I(j) '... auslesen und zur Ausgabe hinzufügen 
28.
Next 
29.
 
30.
fso.CreateTextFile(Aus).Write Daten 'Ausgabedatei schreiben 
31.
WScript.Echo "Fertig."
Vorteil dieser Version: Die Daten müssen nicht sortiert sein ...

Grüße
bastla
Bitte warten ..
Mitglied: mathe172
05.09.2012 um 22:32 Uhr
@bastla: Was meinst du mit "bei dieser Version müssen die Daten nicht sortiert sein"? Müssen sie das bei meiner? Ich bin wahrscheinlich einfach blind...könntest du mich aufklären?

Mathe172
Bitte warten ..
Mitglied: bastla
06.09.2012 um 08:12 Uhr
@ mathe172
Bezog sich nicht auf Deinen Batch, sondern auf die VBS-Ansätze zu anderen Datenstrukturen, die der TO hier schon erhalten hat (und die mich hoffen ließen, dass er vielleicht auch selbst schon einmal zumindest die Grundstruktur würde aufbauen können) ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst PS Werte CSV-Datei in AD Attribut (3)

Frage von lupolo zum Thema Batch & Shell ...

Datenbanken
Access 2016 vertauscht Monat und Tag in meiner CSV Datei (1)

Frage von iGordon zum Thema Datenbanken ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

Neue Wissensbeiträge
Microsoft

Restrictor: Profi-Schutz für jedes Window

Tipp von AlFalcone zum Thema Microsoft ...

Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
VPN Tunnel aufbauen (16)

Frage von Hajo2006 zum Thema LAN, WAN, Wireless ...

Router & Routing
ASUS RT-N18U mit VPN Client hinter Fritzbox - Portforwarding (15)

Frage von marshall75000 zum Thema Router & Routing ...

Microsoft Office
Saubere HTML aus Word-Dokument (15)

Frage von peterpa zum Thema Microsoft Office ...

E-Mail
gelöst Probleme beim E-Mail Empfang (12)

Frage von TommyB83 zum Thema E-Mail ...