Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.6 MB
Время: 0.041 c
7-69040
Maxim Zemskov
2002-08-08 21:48
2002.10.21
Модем


1-68818
Демонов Е.В.
2002-10-09 14:49
2002.10.21
Вопрос про Симафор


4-69078
Daken
2002-09-07 20:53
2002.10.21
Как на WinAPI создать ListView и TabControl


14-68989
777
2002-09-29 01:27
2002.10.21
QNX


1-68765
KVBr
2002-10-11 15:56
2002.10.21
Загрузка приложения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский