Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBASICBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDomain RegistrierungDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetiOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal & DelphiPerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige PeripheriegeräteSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideoViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows NetzwerkWindows PhoneWindows ServerWindows SystemdateienWindows ToolsWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Weniger Werbung?
Cover IT-Administrator
Das Monitoring der IT-Umgebung steht im März auf der Agenda des IT-Administrator Magazins. So lesen Sie in der Ausgabe, wie Sie virtualisierte Umgebungen mit Linux-Appliances überwachen. Außerdem erfahren Sie, was Exchange Server 2013 an Bordmitteln für das Monitoring zu bieten hat. In den Produkttests wirft die Redaktion einen Blick auf iQSol PowerApp - einer extrem flexiblen USV-Steuerung, die granular Serverdienste herunter- und wieder hochfahren kann. ...
GELÖST

nur bestimmte Spalten aus csv Datei auslesen

Frage Entwicklung Batch & Shell

Mitglied: StefanLausL

StefanLausL (Level 1) - Jetzt verbinden

10.07.2009, aktualisiert 18.10.2012, 11130 Aufrufe, 13 Kommentare

Guten Morgen,

ich suche ein Lösung für folgendes Problem:

Ich hab in einem Batch mehrere csv Dateien deren Aufbeu eigentlich identisch sein sollte zu einer Datei zusammengefasst
und wollte diese in eine Tabelle vom SQL-Server 2000 importieren.
Der Import ist aber leider auf Fehler gelaufen da ab Zeile 67000 die Spalten nicht mehr mit den vorhergenden Zeilen übereinstimmen.

Jetzt zu meiner Frage:

Ich benötige nur die Spalten 1-7 der Datei.
Wie kann ich mittels Batch die Spalten 8-x aus der CSV-Datei löschen ?

Für eine Antwort wäre ich sehr dankbar.
Mitglied: crashzero2000
10.07.2009 um 11:02 Uhr
Hy Stefan,

bastla ist im Urlaub [Hä - Hat er sich verdient], er könnte dir sicher was zaubern.

Er hat mir vor geraumer Zeit etwas in VB gescriptet das deiner Sache nahe kommt.
Wenn du etwas VBS kannst , kannst du damit sicherlich was anfangen, in dem Script werden auch Zeilen übersprungen da ich nur bestimmte benötigte und werden in eine andere Datei geschrieben.

Guckst du hier : http://www.administrator.de/forum/wie-csv-per-batch-oder-vbs-in-fremdfo ...

PS:Ich bin leider kein VBS´ler
Bitte warten ..
Mitglied: -ricardo-
10.07.2009 um 11:42 Uhr
Eine CSV kannst du auch mit Excel öffenen ...
Wenn die Datensätze nicht gerade mit einen ; getrennt werden müsstest du dann noch den Delimiter einstellen und hast es dann alles schön sauber in Spalten.

Dann kannst du alles bis auf Spalte 1-7 bzw A-G löschen und unter... Speichern unter .... als csv speichern...

geht am schnellsten :D bevor du anfängst zu proggen ... es sei denn du hast 100 von den Dateien
Bitte warten ..
Mitglied: StefanLausL
10.07.2009 um 11:50 Uhr
Hallo crashzero2000 ,

vielen Dank für den Link.
Werd ich mir gleich mal anschauen.
Bin zwar auch kein VBS'ler aber ich schau mal wie weit ich komme
Bitte warten ..
Mitglied: StefanLausL
10.07.2009 um 11:51 Uhr
Leider sind es mehrere Dateien die mehr als 65.000 Zeilen haben
d.h. mit Excel wird das nix.
Bitte warten ..
Mitglied: -ricardo-
10.07.2009 um 11:53 Uhr
Ja gut Zeilen das ist blöd..

Womit wolltest du es denn Programmieren ...

Vb?
Bitte warten ..
Mitglied: 60730
10.07.2009 um 12:28 Uhr
Zitat von -ricardo-:
Eine CSV kannst du auch mit Excel öffenen ..


Moinsen,

kaum ist der Bastla im Urlaub, tanzen die Mäuse auf dem Tisch


Als Batch - die so gut funktioneren sollte, daß nur ein "B" aus denm B Bereich dort was dran zu bemängeln haben kann...

Und trotzdem ungetestet aus dem Stehgreif....
01.
for /f "tokens=1,7,1-7 delims=, " %%a in (pfad\zur\test.csv) do echo %%a,%%b,%%c,%%d,%%e,%%f,%%g>>pfad_zur_neuen7stelligen.csv

Gruß
Bitte warten ..
Mitglied: 76109
10.07.2009 um 13:50 Uhr
Hallo StefanLausL!

Sorry, habe mich verlesen

Gruß Dieter
Bitte warten ..
Mitglied: StefanLausL
10.07.2009 um 14:02 Uhr
Problem mit dem vbs Skript ist das irgendwann Runtime Error erscheint.
Aus welchen Gründen auch immer.

Der Batch von TimoBeil funktioniert an sich zumindest mit wenigen Daten.
Wenn ich den Batch an den Echtdaten anwende erscheint "Nicht genügend Arbeitsspeicher".
Die Datei ist im Momen 750 MB gross.

Die Datei wurde ja aus vielen anderen csv Dateien erzeugt bzw. zusammengefügt.
Wie kann ich einen Ordner nach csv Dateien durchsuchen und auf die gefunden Dateien diesen Batch
anwenden um diese dann erst im nächsten Schritt zusammen zu fügen ?
Bitte warten ..
Mitglied: 76109
10.07.2009 um 14:27 Uhr
Hallo StefanLausL!

Falls Du mein VB-Script meinst, dann liegt das daran, dass ich nur von maximal 8 Spalten ausgegangen bin. Mehr hatte ich nicht vorgesehen. Ist aber kein Problem, mache nur noch ein paar Tests.

Gruß Dieter
Bitte warten ..
Mitglied: 76109
10.07.2009 um 14:42 Uhr
Hallo nochmal!

Also, mit diesem Code müssen mindestens 7 Spalten vorhanden sein. Ab Spalte 8 werden alle Spalten ignoriert.

Diese Variante sollte in jedem Fall funktionieren:
01.
Const iPath = "F:\$Scripts\Test\Import.Csv" 
02.
Const ePath = "F:\$Scripts\Test\Export.Csv" 
03.
 
04.
Const Delim = ";"  'Bei Tab: Delim = vbTab 
05.
 
06.
Dim Fso, iFile, eFile, iText, eText(6), i 
07.
 
08.
Set Fso = CreateObject("Scripting.FileSystemObject") 
09.
Set iFile = Fso.OpenTextFile(iPath) 
10.
Set eFile = Fso.CreateTextFile(ePath) 
11.
     
12.
Do Until iFile.AtEndOfStream 
13.
    iText = Split(iFile.ReadLine, Delim, 8) 
14.
    If UBound(iText) >= 6 Then 
15.
        For i = 0 To 6: eText(i) = iText(i): Next 
16.
        eFile.WriteLine Join(eText, Delim) 
17.
    End If 
18.
Loop 
19.
 
20.
iFile.Close:  eFile.Close 
21.
 
22.
MsgBox "Der Exportvorgang ist beendet!", vbInformation, "Meldung"

Gruß Dieter

[edit] Text auf das wesentliche gekürzt [/edit]
Bitte warten ..
Mitglied: StefanLausL
10.07.2009 um 16:20 Uhr
Super !

Vielen,vielen Dank.

Das scheint zu funktionieren.
Bitte warten ..
Mitglied: 76109
10.07.2009 um 18:08 Uhr
Hallo StefanLausL!

Prima, gern Geschehen

Gruß Dieter
Bitte warten ..
Neuester Wissensbeitrag
VB for Applications
GELÖST Bestimmte Werte aus CSV Datei automatisch in HTML Datei einfügen (9)

Frage von Salektro zum Thema VB for Applications ...

Batch & Shell
GELÖST CSV-Datei Komma durch Semikolon ersetzen (8)

Frage von FalkIT zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Debian
Debian Webmin - Domains anlegen (12)

Frage von Zockervogel zum Thema Debian ...

Server-Hardware
GELÖST Neuanschaffung Linux-Server für ein paar Dienste (12)

Frage von JudgeDredd zum Thema Server-Hardware ...

DNS
2 FTP-Server hinter einer IP (11)

Frage von MarkusW3400 zum Thema DNS ...