Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Перенос данных из таблицы FoxPro 2.6 в базу Access
|
|||
|---|---|---|---|
|
#18+
Добрый день. Использую в работе C++ Builder. Мне нужно перенести данные из таблицы FoxPro 2.6 в таблицу Access. Использую 2 ADOQuery + (одно для FoxPro, второе для Access). Соединение с базами происходит без проблем. Далее делаю добавление данных из таблицы FoxPro в таблицу базы Access используя следующий код: ADOQfox->Open(); ADOQfox->First(); while(!ADOQfox->Eof){ AQuery->Close(); AQuery->SQL->Clear(); AQuery->SQL->Add( "INSERT INTO myzakaz (zakaz,nmr,kod,dcn,yslr,dzak,kol) VALUES (" " + ADOQfox->FieldByName("zakaz")->AsString +"'," ""+ ADOQfox->FieldByName("nmr")->AsString +"," ""+ ADOQfox->FieldByName("kod")->AsString +"," ""+ ADOQfox->FieldByName("dcn")->AsString +"'," ""+ ADOQfox->FieldByName("yslr")->AsString +"," "'+ ADOQfox->FieldByName("dzak")->AsString +"'," " + ADOQfox->FieldByName("kol")->AsString +")"); AQuery->ExecSQL(); ADOQfox->Next(); } Данные добавляются, но медленно. Может есть какие-то предложения для ускорения переноса данных? Возможно ли это можно сделать одним SQL-запросом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2013, 11:42 |
|
||
|
Перенос данных из таблицы FoxPro 2.6 в базу Access
|
|||
|---|---|---|---|
|
#18+
это одноразовое действие или приложение будет делать это постоянно? т.е. можно сделать так: поставить SQL Server Express, сделать в нем Linked Server для обоих источников и "одним SQL запросом" все проделать. А можно так: читаете несколько записей, ткскыть буффер... формируете запрос на вставку и выполняете его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2013, 12:25 |
|
||
|
Перенос данных из таблицы FoxPro 2.6 в базу Access
|
|||
|---|---|---|---|
|
#18+
Приложение будет делать такую выборку каждый раз при загрузки программы поэтому не думаю, что SQL Server Express будет хорошим решением.... Разве что вместо Access использовать MS SQL Server? Просто мне с Access привычнее работать, да и установлен он у нас на каждой машине. Конечно хотелось бы сделать вставку записей одним запросом и все, но вряд ли это получится из-за того, что базы данных разные.... Хотя вполне возможно я ошибаюсь. В любом случае спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2013, 13:22 |
|
||
|
Перенос данных из таблицы FoxPro 2.6 в базу Access
|
|||
|---|---|---|---|
|
#18+
Winnipuhпоставить SQL Server Express, сделать в нем Linked Server для обоих источников Вообще-то непосредственно в Access ODBC источники линкуются ничуть не хуже... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2013, 13:27 |
|
||
|
Перенос данных из таблицы FoxPro 2.6 в базу Access
|
|||
|---|---|---|---|
|
#18+
flanderzПриложение будет делать такую выборку каждый раз при загрузки программы поэтому не думаю, что SQL Server Express будет хорошим решением.... Разве что вместо Access использовать MS SQL Server? Просто мне с Access привычнее работать, да и установлен он у нас на каждой машине. Конечно хотелось бы сделать вставку записей одним запросом и все, но вряд ли это получится из-за того, что базы данных разные.... Хотя вполне возможно я ошибаюсь. В любом случае спасибо. тогда буфферизуйте, стройте строку batch типа insert into... и выполняйте вставку нескольких записей однйо командой. Я не в курсе можно ли, но наверное можно в одбс выполнить команду типа insert into ... select ... union all select ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2013, 13:33 |
|
||
|
Перенос данных из таблицы FoxPro 2.6 в базу Access
|
|||
|---|---|---|---|
|
#18+
flanderzПриложение будет делать такую выборку каждый раз при загрузки программы А не проще будет выкинуть из этой схемы Access вообще и работать прямо с таблицами FoxPro через соответствующий драйвер?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2013, 13:36 |
|
||
|
Перенос данных из таблицы FoxPro 2.6 в базу Access
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovА не проще будет выкинуть из этой схемы Access вообще и работать прямо с таблицами FoxPro через соответствующий драйвер?.. Там Fox еще старинный, версии 2.6 и хотелось бы использовать его только для выборки необходимых данных, а работать уже в более привычной БД. WinnipuhЯ не в курсе можно ли, но наверное можно в одбс выполнить команду типа insert into ... select ... union all select ... Да вроде нет, я пробовал запрос на выборку select* From table IN 'путь к базе' и то ругается если используешь для подключения VFPOLEDB.1. А если используешь Microsoft.Jet.OLEDB.4.0 то ругается на фоксовскую базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2013, 15:17 |
|
||
|
Перенос данных из таблицы FoxPro 2.6 в базу Access
|
|||
|---|---|---|---|
|
#18+
flanderzТам Fox еще старинный, версии 2.6 Плоский файл он и в Африке плоский файл. При чём тут версия FoxPro? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2013, 15:22 |
|
||
|
Перенос данных из таблицы FoxPro 2.6 в базу Access
|
|||
|---|---|---|---|
|
#18+
flanderzDimitry SibiryakovА не проще будет выкинуть из этой схемы Access вообще и работать прямо с таблицами FoxPro через соответствующий драйвер?.. Там Fox еще старинный, версии 2.6 и хотелось бы использовать его только для выборки необходимых данных, а работать уже в более привычной БД. WinnipuhЯ не в курсе можно ли, но наверное можно в одбс выполнить команду типа insert into ... select ... union all select ... Да вроде нет, я пробовал запрос на выборку select* From table IN 'путь к базе' и то ругается если используешь для подключения VFPOLEDB.1. А если используешь Microsoft.Jet.OLEDB.4.0 то ругается на фоксовскую базу. какая структура и какой размер таблицы (записей) в фоксе может быть в жизни, которую вы платируете читать не старте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2013, 15:30 |
|
||
|
Перенос данных из таблицы FoxPro 2.6 в базу Access
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovПлоский файл он и в Африке плоский файл. При чём тут версия FoxPro? Мне нужна выборка из фоксовкой базы для дальнейшей работы с данными, а не только для просмотра. А в Фоксе 2.6 еще оем кодировка. Для просмотра можно было бы просто выбрать соответствующий Charset, а для работы в кодировке ANSI придется функцию перевода ОЕМ в ANSI использовать.... Хотя можно попробовать сделать выборку из Фокс 2.6 в предварительно созданную базу например в Фокс 8 и работать уже с ней.... Завтра попробую. В принципе и так все работает, но мы же не ищем легких путей - хочется чудо SQL- запрос который выбирал интересующие меня данные из фоксовкой таблицы и добавил в нужную БД или таблицу)))).... Наверное надо было задавать этот вопрос в ветке по Fox, ну или Access. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2013, 16:57 |
|
||
|
Перенос данных из таблицы FoxPro 2.6 в базу Access
|
|||
|---|---|---|---|
|
#18+
flanderzА в Фоксе 2.6 еще оем кодировка. В таблицах FoxPro кодировка данных указывается в заголовке файла. Это позволяет ODBC драйверу корректно преобразовывать её в ANSI или UNICODE автоматически. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2013, 17:45 |
|
||
|
Перенос данных из таблицы FoxPro 2.6 в базу Access
|
|||
|---|---|---|---|
|
#18+
flanderz, Prepared execution, Array binds, batch commit ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2013, 23:40 |
|
||
|
Перенос данных из таблицы FoxPro 2.6 в базу Access
|
|||
|---|---|---|---|
|
#18+
Напишите еще раз: 1. зачем вам брать из фокса и писать в акссесс? т.е. в фоксе вы будете изменять данные или только на чтение? 2. в аксессе вы будете менять данные? 3. какая структура и количество записей (максимум) в таблице на фоксе может быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 11:24 |
|
||
|
Перенос данных из таблицы FoxPro 2.6 в базу Access
|
|||
|---|---|---|---|
|
#18+
WinnipuhНапишите еще раз: 1. зачем вам брать из фокса и писать в акссесс? т.е. в фоксе вы будете изменять данные или только на чтение? 2. в аксессе вы будете менять данные? 3. какая структура и количество записей (максимум) в таблице на фоксе может быть? 1. На Фоксе 2.6 написаны несколько программ использующих фоксовские таблицы соответственно. Я хочу написать программу использующую БД акссесс, но изначально берущую данные из фоксовских таблиц. Из фокса данные будут браться при загрузке моей программы и только для чтения. В принципе можно бы сделать обновление БД на акссессе данными из фоксовских таблиц, но каким образом пока что не могу сообразить. 2. В аксессе данные будут изменятся 3. Там 2 нужных мне для работы таблицы. В каждой максимум 50000 записей. Я просто хочу скопировать данные из этих таблиц в свою базу, а потом уже работать со своей базой как мне будет угодно. Если бы данные в фокс не добавлялись, то и проблем-то не было бы, а так... Вообще-то как я писал в первом посте - все работает, но по скорости хотелось бы быстрее. Пытался сделать при помощи SQL запроса - не получилось. Насколько я понимаю если бы СУБД были одинаковыми, то все можно было бы решить одним SQL запросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 12:01 |
|
||
|
Перенос данных из таблицы FoxPro 2.6 в базу Access
|
|||
|---|---|---|---|
|
#18+
flanderzWinnipuhНапишите еще раз: 1. зачем вам брать из фокса и писать в акссесс? т.е. в фоксе вы будете изменять данные или только на чтение? 2. в аксессе вы будете менять данные? 3. какая структура и количество записей (максимум) в таблице на фоксе может быть? 1. На Фоксе 2.6 написаны несколько программ использующих фоксовские таблицы соответственно. Я хочу написать программу использующую БД акссесс, но изначально берущую данные из фоксовских таблиц. Из фокса данные будут браться при загрузке моей программы и только для чтения. В принципе можно бы сделать обновление БД на акссессе данными из фоксовских таблиц, но каким образом пока что не могу сообразить. 2. В аксессе данные будут изменятся 3. Там 2 нужных мне для работы таблицы. В каждой максимум 50000 записей. Я просто хочу скопировать данные из этих таблиц в свою базу, а потом уже работать со своей базой как мне будет угодно. Если бы данные в фокс не добавлялись, то и проблем-то не было бы, а так... Вообще-то как я писал в первом посте - все работает, но по скорости хотелось бы быстрее. Пытался сделать при помощи SQL запроса - не получилось. Насколько я понимаю если бы СУБД были одинаковыми, то все можно было бы решить одним SQL запросом. Структуру вы не написали, собсвтенно длина записи неизвестна.. Но если исходить из того. что труктура не изменяется и при таком количестве я бы делал так: 1. написал два класса, соотвесттвующих тем двум таблицам 2. на старте всасывал бы в приложение все записи из этих двух таблиц в два массива объектов 3. дальше - делал бы что хотел, писал бы в другую базу, обрабатывал в памяти и т.д.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 13:04 |
|
||
|
Перенос данных из таблицы FoxPro 2.6 в базу Access
|
|||
|---|---|---|---|
|
#18+
Да, но будет ли это работать быстрее вот в чем вопрос. В принципе задача уже решена, на данный момент все добавляется с приемлемой скоростью, в чем была проблема я так до конца и не понял. Возможно проблема была в строке подключения к фоксовской базе так как кроме нее ничего в коде программы не менял. Всем, потратившим на меня свое драгоценное время большое спасибо. Остался единственный вопрос, ради любопытства: Dimitry SibiryakovВ таблицах FoxPro кодировка данных указывается в заголовке файла. Это позволяет ODBC драйверу корректно преобразовывать её в ANSI или UNICODE автоматически. Посмотрел в интернете что-то по этой теме и ничего не нашел (возможно плохо искал). Не подскажете как это сделать? пытался добавить в строку подключения LANGDRIVER="ascii", но в таблице все равно надписи корректно не отображаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 16:01 |
|
||
|
Перенос данных из таблицы FoxPro 2.6 в базу Access
|
|||
|---|---|---|---|
|
#18+
flanderzПосмотрел в интернете что-то по этой теме и ничего не нашел (возможно плохо искал). Не подскажете как это сделать? http://msdn.microsoft.com/en-us/library/5b10d8b6(v=vs.80).aspx CPZERO тупо пишет нужное значение в 26-й байт, можешь посмотреть её исходники. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 17:22 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38294415&tid=2020147]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 290ms |
| total: | 428ms |

| 0 / 0 |
