Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.21;
Скачать: CL | DM;

Вниз

Подскажите метод преобразования CSV файла в DBF.   Найти похожие ветки 

 
sasha123   (2002-09-27 08:44) [0]

Все дело в том что то как у меня получается работает очень медленно:
----
StringList.LoadFromFile(CSV файл)
StringGrid.CommaText:=каждая строка StringList"а
а затем уже StringGrid сохраняю построчно в DBF
----
но у меня CSV файл содержит 31000 строк и при работе по такому методу ну уж оччччень тормозит.


 
V-A-V   (2002-09-27 09:21) [1]

попробуй взять любой компонент работающий с dbf файлами и пихай при помощи его из стринг-листа строки, но естественно строку
сначала надо разобрать по полям...


 
Johnny Smith   (2002-09-27 09:24) [2]

И юзаете при этом BDE?
Могу посоветовать обратиться к www.torry.net за компонентами прямого обращения к *.dbf-файлам (их там несколько). Может, используете какой-нибудь из них в готовом или допишите что-нибудь (формат dbf достаточно прост).
Еще вопрос: какие-либо визуальные компоненты отражают данные, поступающие в *.dbf-файл? Если да, то задизейблите их - поможет.


 
V-A-V   (2002-09-27 09:30) [3]

Да нет BDE никогда не юзаю. В основном ADO и иногда Advanteg.


 
Johnny Smith   (2002-09-27 09:58) [4]

2V-A-V (27.09.02 09:30)
Да нет BDE никогда не юзаю. В основном ADO и иногда Advanteg.

Извините, я обращался к sasha123 (27.09.02 08:44) :)))
Сам BDE юзал только на заре туманной юности :))))), пока не занялся программированием профессионально.


 
sasha123   (2002-09-27 10:44) [5]

Спасибо за ответы.
Значит DisableControls уменьшило время конвертации на 15%, но это не предел. Например в FoxPro это делается одно командой и работает ну оччччень быстро.
Сейчас смотрю torry.net


 
ЮЮ ©   (2002-09-27 10:55) [6]

>StringGrid.CommaText
StringGrid - это TStringGrid? А он то зачем? Может лучше сначала перекачать, а затем использовать DBGrid?


 
sasha123   (2002-09-27 11:08) [7]

2 ЮЮ: Не понял идею.


 
ЮЮ ©   (2002-09-27 11:27) [8]

Это я не понял? StringGrid - это TStringGrid, или это TStringList так странно назван?


 
sniknik ©   (2002-09-27 11:58) [9]

раз ты используеш ADO то можеш перекачать одним запросом почему не используеш?

при подключении через ADO и Jet к Dbf базе запрос к CSV будет выглядеть сл.образом
SELECT * FROM [Text;DATABASE=D:\].[rrrr#csv]
переделать на Select INTO думаю труда не составит?
попробуй.


 
sasha123   (2002-09-27 13:17) [10]

2 ЮЮ: Ну я чтоб по файлу не бродить загрузил его в StringList. А затем
for (int i=0;i<ptrStringList->Count;i++)
{
ptrSG->Rows[0]->CommaText=ptrStringList->Strings[i];
TWeekOtchet->Insert();
TWeekOtchet->FieldByName("F1")->Value=ptrSG->Cells[0][0];
TWeekOtchet->FieldByName("F2")->Value=ptrSG->Cells[1][0];
TWeekOtchet->FieldByName("F3")->Value=ptrSG->Cells[2][0];
.....
TWeekOtchet->FieldByName("F10")->Value=ptrSG->Cells[9][0];
TWeekOtchet->Post();
}
Вот по такому методу я и работаю.

2 shiknik: Ща SQL буду пробовать.
2 ALL: Большое и толстое спасибо ВСЕМ кто согласился ответить на заданный вопрос.


 
ЮЮ ©   (2002-09-27 13:29) [11]

Cначала 31000 строк загрузил в StringList, затем создаешь 31000 строк в StringGrid. Да еще FieldByName вместо Fields[]. И ТТable вместо параметрического запроса на вставку записи.
И откуда только тормоза? :-)


 
sasha123   (2002-09-27 13:33) [12]

2 shiknik: Чегото не получается.


 
sniknik ©   (2002-09-27 13:39) [13]

что говорит? может PapamCheck в true стоит. (я на это первым делом нарвался) там в запросе двоеточие стандартно ADO ждет параметр после него.


 
sniknik ©   (2002-09-27 13:59) [14]

сорри это меня сглюкнуло :-), проверял оказывается при основном подключении к mdb файлу (родной для джета)
строка подключения была
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=D:\Base.mdb;Persist Security Info=False
запрос на переброску
SELECT * INTO [dBase IV;DATABASE=D:\].[rrrr#DBF] FROM [Text;DATABASE=D:\].[rrrr#csv]

а когда основное к dbf сделал пошли косяки. еще раз corry.


 
sasha123   (2002-09-27 14:28) [15]

2ЮЮ: Никаких 31000 строк в StringGrid"е я не создаю. Строка всего одна и служит для разбивки строки StringList"а на колонки.
И неужели такая большая разнница м\у Field и FieldByName.

2sniknik: Весь прикол в том что используется обыкновенный TQuery


 
sniknik ©   (2002-09-27 15:30) [16]

В смысле обыкновенный? :-))
опять мой глюк. прочитал что пользуются ADO а решил что это ты, почемуто. :-(

разница между Field и FieldByName в том что первый по смещению поле ищет а второй разбирает строку имен находит смещение и вызывает первый метод. и так для каждого поля каждой строки.



Страницы: 1 вся ветка

Текущий архив: 2002.10.21;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
1-68804
ZEE
2002-10-08 17:43
2002.10.21
Вызов Properties


4-69062
МИФИст
2002-09-06 00:50
2002.10.21
Перерисовка RichEdit...


14-68914
iNew
2002-09-26 21:34
2002.10.21
Помогите новичку


6-68909
madcap
2002-08-17 12:53
2002.10.21
Мастерам Delphi и Cи..


1-68857
Николай Быков
2002-10-10 14:09
2002.10.21
Считывание файла прогриммы