Имя: Пароль:
1C
 
Чтение CSV-файлов. Какой максимально быстрый способ?
0 Пол Ньюман
 
25.12.08
18:19
ADO? XBase? Что-ниббудь их читает? Или может есть преобразовыватель из csv в dbf или в xls на худой конец
1 Господин ПЖ
 
25.12.08
18:19
DTS в скуле...
2 Нуф-Нуф
 
25.12.08
18:35
эксель их читает
3 Пол Ньюман
 
25.12.08
18:35
Что ДТС в скуле? Читает, преобразовывает? Что вообще такое DTS? Как им воспользоваться программно?
4 Нуф-Нуф
 
25.12.08
18:35
в экселе можно конвертнуть в xls
5 Пол Ньюман
 
25.12.08
18:36
(2) Программно имею ввиду, через Excel-application очень долго.
6 Пол Ньюман
 
25.12.08
18:36
(4) Ну это да, на крайний случай.
7 Господин ПЖ
 
25.12.08
19:00
(3) в гугле забанили?
8 b_ru
 
25.12.08
19:02
максимально быстрый - как текстовый файл
9 Fragster
 
гуру
25.12.08
19:05
если правильный csv - то ado с провайдером text/csv будет самый быстрый
10 Fragster
 
гуру
25.12.08
19:05
(9) и удобный
11 Михей
 
25.12.08
19:06
ТабличныйДокумент + РазложитьСтрокуВМассив()

и пагнале!
12 Пол Ньюман
 
25.12.08
19:10
(7) Понятия не имею где тебя забанили.
(9) Хм, попробую.
(11) Тоже чертовски интересно, возможно и нтересней всего.
Благодарю 9 и 11.
13 у лю 427
 
25.12.08
19:12
да и экселем через оле будет быстро - работаешь то не с каждой строкой, а со всем csv файлом сразу...
14 Пол Ньюман
 
25.12.08
19:15
(13) Да, быстро, только юзерам прийдется открывать и сохранять в экселе. не развалятся конечно, но если можно без лишних операций, то лучше наверное без них?
15 Пол Ньюман
 
25.12.08
19:16
А, не, зачем через ОЛЕ, адо быстро работает, хотя попробую 9, если прокатит, все будет замечательно.
16 у лю 427
 
25.12.08
19:16
открой через оле и через оле сохрани...
кстати, через ДБФ в этом случае проще и быстрее будет ....
17 Пол Ньюман
 
25.12.08
19:23
(16) Что значит "через дбф будет проще"?
18 Fragster
 
гуру
25.12.08
19:25
(15,16) а нах сохранять? как открыл, так и тяни данные... а если для дальнейшего адо - то и не надо...
19 Пол Ньюман
 
25.12.08
19:26
(18) Не могу в гугле найти пример как через АДО прочитать csv
20 у лю 427
 
25.12.08
19:28
(17) открыл указанный ХЛС, сохранил в ДБФ, открыл ДБФ и понесся...

(18) если ХЛС - 100 строк - проще его прочитать, а если в нем как у меня - 10 листов по 50 тыс строк.... Замаешься... А через ДБФ - мухой обрабатывается...
21 Живой Ископаемый
 
25.12.08
19:32
Я сделал свой выбор - читать как текст, разбирать строку на поля при помощи регулярных выражений.. Правильное выражение завтра поищу...
22 Пол Ньюман
 
25.12.08
19:33
(20)  Так в чем и был вопрос. Я не знал что Excel умеет в дбф преобразовывать. Спасибо большое! Наверное это оптимально.
23 pectopatop
 
25.12.08
19:33
(19) connectionstrings.com -  тут посмотри. там вся фича в строке подключения
24 Господин ПЖ
 
25.12.08
19:34
>>Я не знал что Excel умеет в дбф преобразовывать

точно в гугле забанили...
25 Пол Ньюман
 
25.12.08
19:35
Просто делаю перенос из одной программы, в которой по документации есть возможность сохранять в формате дбф, написал под дбф код, а он в дбф не сохраняет по непонятным причинам, только в сиэсвэ.
26 Живой Ископаемый
 
25.12.08
19:36
27 Пол Ньюман
 
25.12.08
19:37
(26) Такого не будет, неоткуда ";" внутри значения взяться.
28 Живой Ископаемый
 
25.12.08
19:39
(27) тогда как текст и разбить строку в массив подстрок...
29 Пол Ньюман
 
25.12.08
19:42
(23) Спасибо, посмотрю
(28) Проверю насколько быстро будет работать, может тоже интересным быть через ЧтениеТекста одинэсовский.
30 NcSteel
 
25.12.08
19:45
(7) Википедия )
DTS — формат звука, созданный Digital Theater System, конкурирующий, но схожий с Dolby Digital. Формат DTS использует меньший уровень сжатия, чем Dolby, так что теоретически он звучит лучше, что доказывают на практике диски, на которых записаны дорожки и в DD, и в DTS. Формат DTS Stereo практически идентичен Dolby Surround. DTS поддерживает как 5.1-канальный, так и 7.1-канальный варианты звука. Также называется DTS Surround Sound.
31 Пол Ньюман
 
25.12.08
19:48
(30) Во, то что надо, огромное спасибо господину пэжэ
32 NcSteel
 
25.12.08
19:52
Data Transformation Service , видимо он имел вот это. Но сам ищу нормальное определение все найти не могу )))
33 NcSteel
 
25.12.08
19:53
DTS (Data Transformation Services). "Службы преобразования данных" – инструментальное средство SQL Server для преобразования данных между различными системами.

Для страждущего )
34 у лю 427
 
25.12.08
19:57
строки с текстухой через эксель в дбф - аккуратно надо.... там засада есть классная...
35 Господин ПЖ
 
25.12.08
20:06
совсем дятлы что ли? написано же dts для sql. Совсем тупеют, каждому ссылку надо в клюв положить...

http://www.sql.ru/articles/mssql/2004/04021001SQLServer2kDTSpart1.shtml
36 NcSteel
 
25.12.08
20:09
(35) Ты в (30) Улыбку не увидел?
37 Пол Ньюман
 
25.12.08
20:23
По моему психическое здоровье дятловода оставляет желать лучшего.
38 Ковычки
 
25.12.08
20:31
(9) и напорешся на грабель...
если в пределах разумного то быстрее всего ексель, Пит прав
39 Пол Ньюман
 
25.12.08
20:45
В принципе этот код для тысячи строк работает довольно быстро, секунд 8-10, иногда эксель-аппликейшн только запускается столько времени, посему оставлю так, но для общего развития ветка полезна, всем кроме нервозного господина спасибо ещё раз.

ЧтениеФайла = Новый ЧтениеТекста;
       
       //КодировкаТекста[мКодировкаФайла]
       ЧтениеФайла.Открыть(ФайлПуть, ,,,Ложь);
       
       ТекстЗаголовка = ЧтениеФайла.ПрочитатьСтроку();
       Колонки = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ТекстЗаголовка, Символы.Таб);
       
       Для Каждого Колонка Из Колонки Цикл
           
           Если Колонка = "" Тогда
               
               Прервать
               
           КонецЕсли;
           
           СтруктураЗначенийСтроки.Вставить(Колонка);
           
       КонецЦикла;
       
       ТекстЗаголовка = ЧтениеФайла.ПрочитатьСтроку();
       Пока ТекстЗаголовка <> Неопределено Цикл
           
           Значения = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ТекстЗаголовка, Символы.Таб);
           
           Индекс = 0;
           Для Каждого Зн Из СтруктураЗначенийСтроки Цикл
               
               Значение = Значения[Индекс];
               
               Если ЗначениеЗаполнено(Значение) Тогда
                   
                   Если Лев(Значение, 1) = """" Тогда
                       
                       Значение = Сред(Значение, 2, СтрДлина(Значение) - 2);
                       
                   ИначеЕсли СтрЧислоВхождений(Значение, ".") = 2 Тогда
                       
                       Значение = Дата(Число(Сред(Значение, 7)),
                                       Число(Сред(Значение, 4, 2)),
                                       Число(Лев(Значение, 2)));
                                       
                   Иначе
                                       
                       Значение = Число(Значение);
                       
                   КонецЕсли;
                   
               КонецЕсли;
               
               СтруктураЗначенийСтроки.Вставить(Зн.Ключ, Значение);
               Индекс = Индекс + 1;
               
           КонецЦикла;
           
           ПрочитатьДанныеСтроки(СтруктураЗначенийСтроки);    
           ТекстЗаголовка = ЧтениеФайла.ПрочитатьСтроку();
           
       КонецЦикла;
40 Господин ПЖ
 
25.12.08
21:55
(36) неа
41 Fragster
 
гуру
25.12.08
22:33
(39) тогда уж такая заляпуха будет быстрее: Книга знаний: Преобразование csv в таблицу значений
42 Пол Ньюман
 
25.12.08
22:41
(41) "А то достали уже с этим вопросом." Хехе :)
-
А за счет чего это будет быстрее, поясни плиз.
43 Fragster
 
гуру
25.12.08
22:42
(42) а, не протупил... у тя та же фигня... подумал сначала про чтение через ексель, промотав большой кусок кода :) я сегодня пьяный, мне можно ;))
44 Fragster
 
гуру
25.12.08
22:43
(42) если есть дополнения по поводу приведения к стандарту - пжалста, дополни
45 Пол Ньюман
 
25.12.08
22:43
ЧтениеТекста работает медленнее чем ТекстовыйДокумент(аналог Текста в 8ке)? Я почему-то считал наоборот.
46 Fragster
 
гуру
25.12.08
22:43
(45) там для 7.7
47 Пол Ньюман
 
25.12.08
22:44
(43) неее, Эксель.аппликейшн очень тормозная вещь.
48 Пол Ньюман
 
25.12.08
22:44
(46) да понял, потому и пишу что текстовыйДокумент - аналог
49 Ковычки
 
25.12.08
23:03
(47) ексельАпликейшен очень быстрая вещь, быстрее любых адо-шмадо
50 Пол Ньюман
 
25.12.08
23:13
Наверное я не умею её готовить, но построчное считывание данных через Cellls().Value на 1000 строк данных тормозит безбожно, да и простая логика подсказывает, что тормозной оле-механизм никак не может быть быстрее адо-шмадо
51 Ковычки
 
25.12.08
23:58
(50) врет твоя логика... ровно на бутылку коньяка
52 Fynjy
 
26.12.08
00:19
Народ я знаю самый быстрый способ и без адо ...
readfile = filesys.OpenTextFile("c:\1.txt", 1, false)
mystring = readfile.ReadLine()
или
myallstring = readfile.ReadAll()
...
Куда быстрее DTS ...
53 DancingShadow
 
26.12.08
09:38
(50) зачем построчно?
54 DancingShadow
 
26.12.08
09:38
+53 лучше посимвольно