chrislm
Goto Top

2 Dateien verbinden

Hallo.
Ich habe schon einiges herumprobiert bin aber bisher zu keiner Lösung gekommen.
Mein Problem: Ich möchte 2 csv dateien zusammen fügen zu einer, aber abwechselnd.
Die erste Zeile von Datei1 dann die erste Zeile von Datei2.
Die zweite Zeile von Datei1 und wieder die 2. Zeile von Datei2 und das alles in gesamt.csv
Im enteffekt will ich nur die Adressen Mischen, eine CSV hat 7 Token...

Content-Key: 182618

Url: https://administrator.de/contentid/182618

Ausgedruckt am: 28.03.2024 um 14:03 Uhr

Mitglied: bibi52
bibi52 26.03.2012 um 18:21:23 Uhr
Goto Top
Hallo, ich verstehe nicht genau was Du mit 7 Token meinst.

Wieviele Daten, Zeilen, enthalten denn die beiden CSV Dateien jeweils.
Kannst die z.B. in Excel reinladen und dann einfach via Copy - Paste die Zeilen einfügen?

Wenn es sehr viele Zeilen sind, könnte ich mir vorstellen, dass zuerst die 1. CSV Datei
in Excel reinladest. Dann würde ich vorne eine neue Spalte einfügen und alle Zeilen
durchnummerieren und zwar mit 1, 3, 5, 7, usw.

Am untersten Ende fügst dann die 2. CSV Datei ein.
Die tust dann auch durchnummerieren mit 2,4,6, usw. Das kann man mit Excel
ja autom. erledigen lassen.

Und danach dann alles markieren und nach der 1. Spalte sortieren.
Sollte so eigentlich funktionieren.

Gruß
Christian
Mitglied: Skyemugen
Skyemugen 26.03.2012 um 18:28:23 Uhr
Goto Top
Zitat von @bibi52:
Hallo, ich verstehe nicht genau was Du mit 7 Token meinst.

Aloha,

guck mal, in welchem Bereich der Thread ist, tokens bezieht sich auf eine for-Schleife und nein @TE ich habe dazu heute keine Lust, den Aufwand haben wir bereits betrieben, such mal ein wenig im Forum ...

wobei wenn er nur Zeile, Zeile will, dann benötigt er auch keine tokens, dennoch ist das Thema nicht neu ...

greetz André
Mitglied: Biber
Biber 26.03.2012 um 18:40:06 Uhr
Goto Top
er könnte ja z.B. beide CSV-Dateien mit FindStr /n $ durchnummerieren lassen, an SORT zwischenpipen und das Ergebnis mit einer FOR /F-Anweisung wieder von den Zeilennummern befreien.

Das könnten aber bis zu anderthalb Zeilen am CMD-Prompt werden....

Grüße
Biber
Mitglied: chrislm
chrislm 26.03.2012 um 18:40:15 Uhr
Goto Top
Ich meinte damit die Spalten, Name, Vorname, Straße, Plz usw..

Aber mit meinem Verhältniss 1zu1 hat nicht hin, ich muss wohl 2 zu 1 nehmen. also 2 zeilen aus der Datei 1 und 1 aus datei 2.
Das mit dem Excel scheint dann nicht mehr zu funktionieren, sonst würde ich es so machen..
Mitglied: bastla
bastla 26.03.2012 um 20:59:01 Uhr
Goto Top
Hallo chrislm!

Als VBScript etwa so:
Datei1 = "D:\Datei1.csv"  
Datei2 = "D:\Datei2.csv"  
DateiNeu = "D:\Gesamt.csv"  

Anzahl1 = 2 'Anzahl der Zeilen aus Datei1, bevor die nächste Zeile aus Datei2 an die Reihe kommt  

Set fso = CreateObject("Scripting.FileSystemObject")  
T1 = Split(fso.OpenTextFile(Datei1).ReadAll, vbCrLf)
T2 = Split(fso.OpenTextFile(Datei2).ReadAll, vbCrLf)

For i = 0 To UBound(T1) Step Anzahl1
    For x = 1 To Anzahl1
        k = i + x - 1
        If k <= UBound(T1) Then If T1(k) <> "" Then T = T & vbCrLf & T1(k)  
    Next
    If j <= UBound(T2) Then If T2(j) <> "" Then T = T & vbCrLf & T2(j)  
    j = j + 1
Next

Do While j <= UBound(T2)
    If T2(j) <> "" Then T = T & vbCrLf & T2(j)  
    j = j + 1
Loop

fso.CreateTextFile(DateiNeu).Write Mid(T, 3)
Sollten übrigens beide Dateien eine Kopfzeile haben, füge vor Zeile 11 noch
j = 1
hinzu ...

Grüße
bastla

[Edit] Noch etwas flexibler gestaltet [/Edit]
Mitglied: Biber
Biber 26.03.2012 um 21:24:31 Uhr
Goto Top
Sach ma, bastla,

ist dir am heutigen Montag schon aufgefallen, dass du grad zwei (Address-) CSV-Dateien Zeile für Zeile abwechselnd zu einer grossen (Address-) CSV-Datei zusammenmischt??

Ich meine: Ja hey! Wenn es denn unterschiedliche (=eindeutig identifizierbare) Adressen sind, die bei einem späteren Import in Excel oder Datenbank keine Kollisionen verursachen...

-> dann kannst du einfach die beiden Textklumpen aneinanderketten (eine davon ggf. enthauptet bzw. ohne Kopfzeile).

Es hat doch bei zwei oder vier oder sechs sequentiell zu verarbeitenden CSV-Dateien keinerlei Vorteil, wenn zuerst Zeile 1 aus DateiA, dann Zeile 1 aus DateiB gelesen wird.

Es kann/darf doch nichts dagegensprechen, genausogut erst alle Primzeilen aus Datei A, dann die durch 7 ohne Rest teilbaren Zeilen aus Datei B und dann jeweils den zusammengekehrten Rest einzusaugen.

Und dann den ganzen Klumpen zu sortieren alphabetisch oder nach ID.

???? Oder geht es um eine Wette?

Etwas ratlos
Biber
Mitglied: bastla
bastla 26.03.2012 um 21:31:17 Uhr
Goto Top
Hallo Biber!

Is doch nur Spass (oder wie meine Tochter *nicht, dass ich nochmal 13 sein möchte* neulich fragte: Muss denn immer alles Sinn ergeben?) ... face-wink

Grüße
bastla
Mitglied: Biber
Biber 26.03.2012 um 21:39:47 Uhr
Goto Top
Moin bastla,

na, dann bin ich ja beruhigt....

Ich mag ja diesen irgendwie so heimatlich anmutenden, typisch deutschen "Spass"-Begriff.

So wie wir ihn alle lieben auch im Kontext "Verstehen sie Spass?" oder "Spasspartei" oder "Faukspass".

Asterix hätte gesagt: "Die spinnen, die Skripter.".

Aber auch er hätte es mit einem face-wink gesagt.

Grüße
Biber
Mitglied: bastla
bastla 26.03.2012 um 21:43:14 Uhr
Goto Top
Hallo Biber!
Ich mag ja diesen irgendwie so heimatlich anmutenden, typisch deutschen "Spass"-Begriff.
Extra deswegen auch nicht "Spaß" ... face-wink

Grüße
bastla

P.S.: Etwas enttäuschend war die Antwort, die sich meine Tochter dann gleich selbst gegeben hat: Eigentlich schon. face-wink
Mitglied: Biber
Biber 26.03.2012 um 21:48:38 Uhr
Goto Top
Moin bastla,

Eigentlich schon.

Wenn sie mit dreizehn schon so souverän mit dem kursiv gesprochenen eigentlich umgehen kann, .....

...dann hast du ihr alles Wesentliche des Lebens und unseres Kulturkreises vermittelt. face-wink

Grüße
Biber
Mitglied: chrislm
chrislm 27.03.2012 um 09:08:49 Uhr
Goto Top
Das ist wie immer hier klasse!!!!
vielen dank, besonders an bastla der mir hier schon oft geholfen hat!