Thread View: alt.pl.comp.lang.csharp
6 messages
6 total messages
Started by 3P
Fri, 12 Feb 2010 22:59
Parsowanie CSV - niby proste
Author: 3P
Date: Fri, 12 Feb 2010 22:59
Date: Fri, 12 Feb 2010 22:59
24 lines
2000 bytes
2000 bytes
Męczę się już z tym kilka godzin.
Nie mogę sparsować CSV (',' jako separator).
Problemy
1. Jak plik jest postaci pierwszyczlon.drugi.txt to OleDb nie potrafi
zrobić SELECTA do takiego pliku. Jak zmienię mu nazwę na jedenczlon.txt
jest ok - to mniejszy problem.
2. OleDb zwraca mi wszystko jako jedna kolumnę. Jak zmienię separator na
';' to działa. W sieci znalazłe, że do ConnectionStringa mogę dodać
FMT=Delimited(x), gdzie x jest separatorem. Guzik prawda, nie działa to.
Na stronach MS pisza o utworzenie pliku schema.ini
http://msdn.microsoft.com/en-us/library/ms709353(VS.85).aspx i tam
ustawieniu separatora (Format = Delimited(x). Guzik prawda, nie działa to.
Również w sieci znalazłem informację, że domyślny separator plików CSV
zapisany jest w rejestrze
(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text\Format) i
rzeczywiście na moim komputerze jest tam ';'. Czyli wyglada na to, że
rejestr bierze górę nad connectionstringiem i schema.ini.
Czy ktoś udanie sparsował CSV przy pomocy OleDb i mógłby się podzielić
doświadczeniami? Wszystkie wartości sa w " " ponieważ zawieraja przecinki
(liczby).
Re: Parsowanie CSV - niby proste
Author: Tomasz Muszyński
Date: Fri, 12 Feb 2010 23:39
Date: Fri, 12 Feb 2010 23:39
26 lines
2472 bytes
2472 bytes
W dniu 10-02-12 23:59, 3P pisze: > Problemy > 1. Jak plik jest postaci pierwszyczlon.drugi.txt to OleDb nie potrafi > zrobić SELECTA do takiego pliku. Jak zmienię mu nazwę na jedenczlon.txt > jest ok - to mniejszy problem. > > 2. OleDb zwraca mi wszystko jako jedna kolumnę. Jak zmienię separator na > ';' to działa. W sieci znalazłe, że do ConnectionStringa mogę dodać > FMT=Delimited(x), gdzie x jest separatorem. Guzik prawda, nie działa to. > Na stronach MS pisza o utworzenie pliku schema.ini > http://msdn.microsoft.com/en-us/library/ms709353(VS.85).aspx i tam > ustawieniu separatora (Format = Delimited(x). Guzik prawda, nie działa > to. Również w sieci znalazłem informację, że domyślny separator plików > CSV zapisany jest w rejestrze > (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text\Format) i > rzeczywiście na moim komputerze jest tam ';'. Czyli wyglada na to, że > rejestr bierze górę nad connectionstringiem i schema.ini. > > Czy ktoś udanie sparsował CSV przy pomocy OleDb i mógłby się podzielić > doświadczeniami? Wszystkie wartości sa w " " ponieważ zawieraja > przecinki (liczby). A po co Ci do tego aż OleDb? Nie prościej napisać własny parserek lub nawet znaleźć w sieci gotowe DataReadery? tm
Re: Parsowanie CSV - niby proste
Author: 3P
Date: Fri, 12 Feb 2010 23:54
Date: Fri, 12 Feb 2010 23:54
9 lines
1298 bytes
1298 bytes
> A po co Ci do tego aż OleDb? Nie prościej napisać własny parserek lub > nawet znaleźć w sieci gotowe DataReadery? > > tm To wcale nie jest takie proste. Cudzysłowy w cudzysłowach, pola na wiele wierszy itd. A wczytanie tego to jest 1/10 całego zadania, więc średnio mi się uśmiecha pisanie pełnego parsera. Potrzebuję tego do komercyjnego produktu, więc nie mogę sobie ściągnąć z sieci.
Re: Parsowanie CSV - niby proste
Author: robi
Date: Sat, 13 Feb 2010 07:22
Date: Sat, 13 Feb 2010 07:22
17 lines
1667 bytes
1667 bytes
zdefiniuj sobie szumi go wytnij lub zamień na jeden separator -- pozdrawiam robi Użytkownik "3P" <nospam@serwer.pl> napisał w wiadomości grup dyskusyjnych:op.u71goheamsp0fz@mcs... >> A po co Ci do tego aż OleDb? Nie prościej napisać własny parserek lub >> nawet znaleźć w sieci gotowe DataReadery? >> >> tm > > To wcale nie jest takie proste. Cudzysłowy w cudzysłowach, pola na wiele > wierszy itd. A wczytanie tego to jest 1/10 całego zadania, więc średnio mi > się uśmiecha pisanie pełnego parsera. Potrzebuję tego do komercyjnego > produktu, więc nie mogę sobie ściągnąć z sieci.
Re: Parsowanie CSV - niby proste
Author: Tomasz Muszyński
Date: Sat, 13 Feb 2010 11:52
Date: Sat, 13 Feb 2010 11:52
20 lines
2086 bytes
2086 bytes
W dniu 10-02-13 00:54, 3P pisze: >> A po co Ci do tego aż OleDb? Nie prościej napisać własny parserek lub >> nawet znaleźć w sieci gotowe DataReadery? >> > To wcale nie jest takie proste. Cudzysłowy w cudzysłowach, pola na wiele > wierszy itd. A wczytanie tego to jest 1/10 całego zadania, więc średnio > mi się uśmiecha pisanie pełnego parsera. Potrzebuję tego do komercyjnego > produktu, więc nie mogę sobie ściągnąć z sieci. Bzdura! Mi znalezienie odpowiedniego parsera zajęło... 1 minutę! Szybki i na oko zgodny z RFC. Na licencji MIT, więc możesz użyć w komercyjnym produkcie. http://www.codeproject.com/KB/database/CsvReader.aspx Ile procent mi odpalisz ze swojego komercyjnego produktu? Zaoszczędziłem Ci trochę czasu ;) tm
Re: Parsowanie CSV - niby proste
Author: 3P
Date: Sat, 13 Feb 2010 16:16
Date: Sat, 13 Feb 2010 16:16
27 lines
2163 bytes
2163 bytes
Dnia 13-02-2010 o 12:52:44 Tomasz Muszyński <thom_ek@op.pl_nospam> napisał(a): > W dniu 10-02-13 00:54, 3P pisze: >>> A po co Ci do tego aż OleDb? Nie prościej napisać własny parserek lub >>> nawet znaleźć w sieci gotowe DataReadery? >>> >> To wcale nie jest takie proste. Cudzysłowy w cudzysłowach, pola na wiele >> wierszy itd. A wczytanie tego to jest 1/10 całego zadania, więc średnio >> mi się uśmiecha pisanie pełnego parsera. Potrzebuję tego do komercyjnego >> produktu, więc nie mogę sobie ściągnąć z sieci. > > Bzdura! > > Mi znalezienie odpowiedniego parsera zajęło... 1 minutę! Szybki i na oko > zgodny z RFC. Na licencji MIT, więc możesz użyć w komercyjnym produkcie. > > http://www.codeproject.com/KB/database/CsvReader.aspx > > Ile procent mi odpalisz ze swojego komercyjnego produktu? Zaoszczędziłem > Ci trochę czasu ;) > Tylko że nie pasuje do obiektów w projekcie i musiałbym go sporo przerobić lub robić jakieś protezy. Poza tym trzeba umieszczać Copyright autora. Pozostawię decyzję przełożonym, bo mogę zrobić nie uniwersalny parser (teraz i tak mam tylko jeden rodzaj CSV do parsowania).
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads