🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#21348
Author: 3P
Date: Fri, 12 Feb 2010 22:59
24 lines
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
#21349
Author: Tomasz Muszyński
Date: Fri, 12 Feb 2010 23:39
26 lines
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
#21350
Author: 3P
Date: Fri, 12 Feb 2010 23:54
9 lines
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
#21351
Author: robi
Date: Sat, 13 Feb 2010 07:22
17 lines
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
#21352
Author: Tomasz Muszyński
Date: Sat, 13 Feb 2010 11:52
20 lines
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
#21353
Author: 3P
Date: Sat, 13 Feb 2010 16:16
27 lines
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