Форум: "Базы";
Текущий архив: 2002.10.21;
Скачать: [xml.tar.bz2];
ВнизПодскажите метод преобразования 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c