|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ??? Смысл в том чтобы передать таблицу на сервер не по отдельной записи, а сразу всю таблицу для последующих операций уже внутри сервера. Как это сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2011, 21:50 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
Питон33, XML? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2011, 22:54 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
Игорь ГорбоносПитон33, XML? Конкретный пример можно? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2011, 23:34 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
Питон33, я не работал с MySql и не знаю его возможностей для работы с XML, через XML я общаюсь с MSSQL и пример могу дать для MSSQL ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 01:06 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
Игорь ГорбоносПитон33, я не работал с MySql и не знаю его возможностей для работы с XML, через XML я общаюсь с MSSQL и пример могу дать для MSSQL Дайте пример тогда для MSSQL? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 01:22 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
Питон33КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ??? Смысл в том чтобы передать таблицу на сервер не по отдельной записи, а сразу всю таблицу для последующих операций уже внутри сервера. Как это сделать?Для начала неплохо бы выяснить а что, собственно, имеет MySQL для таких действий? Есть ли в нем возможность "одной командой" закачать таблицу? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 10:08 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
Питон33Игорь ГорбоносПитон33, я не работал с MySql и не знаю его возможностей для работы с XML, через XML я общаюсь с MSSQL и пример могу дать для MSSQL Дайте пример тогда для MSSQL? 1. Клиент 1.1. Выбираем необходимы поля и записи из курсора и сохраняем в новый курсор: Код: plaintext
Код: plaintext 1. 2.
Код: plaintext 1. 2.
2. Сервер Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 10:13 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
Алексей, а почему не использовать закачку в MS SQL напрямую подключившись к нужной таблице? Ну, там через Linked Server или запросом через OpenRowSet()? Зачем нужен посредник в виде файла XML? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 11:02 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
ВладимирМАлексей, а почему не использовать закачку в MS SQL напрямую подключившись к нужной таблице? Ну, там через Linked Server или запросом через OpenRowSet()? Зачем нужен посредник в виде файла XML? Так это не ко мне вопрос! Питон33 спрашивал как из VFP проделать такую операцию. А если надо именно закачать данные из DBF на сервер, то Вы совершенно правы! Я бы использовал SSIS пакет (если надо проделывать это регулярно) или OpenRowSet (если не нет). Сам VFP для этого не нужен. С уважением, Алексей ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 11:45 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
Aleksey-KВладимирМАлексей, а почему не использовать закачку в MS SQL напрямую подключившись к нужной таблице? Ну, там через Linked Server или запросом через OpenRowSet()? Зачем нужен посредник в виде файла XML? Так это не ко мне вопрос! Питон33 спрашивал как из VFP проделать такую операцию. А если надо именно закачать данные из DBF на сервер, то Вы совершенно правы! Я бы использовал SSIS пакет (если надо проделывать это регулярно) или OpenRowSet (если не нет). Сам VFP для этого не нужен. С уважением, Алексей Нужно именно из VFP! К примеру, подготовить записи в программе VFP и передать их одним махом на сервер. Теперь возникает второй вопрос: Какой метод будет работать быстрее - через ODBC в цикле обновлять по одной записи, или формируя громадный XML и потом пересылать его на сервер, да потом там ещё проделывать с ним операции? В общем интересует скорость. Какой же всё-таки из методов самый быстрый для 500 000 записей DBF. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 15:53 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
Питон33Aleksey-Kпропущено... Так это не ко мне вопрос! Питон33 спрашивал как из VFP проделать такую операцию. А если надо именно закачать данные из DBF на сервер, то Вы совершенно правы! Я бы использовал SSIS пакет (если надо проделывать это регулярно) или OpenRowSet (если не нет). Сам VFP для этого не нужен. С уважением, Алексей Нужно именно из VFP! К примеру, подготовить записи в программе VFP и передать их одним махом на сервер. Теперь возникает второй вопрос: Какой метод будет работать быстрее - через ODBC в цикле обновлять по одной записи, или формируя громадный XML и потом пересылать его на сервер, да потом там ещё проделывать с ним операции? В общем интересует скорость. Какой же всё-таки из методов самый быстрый для 500 000 записей DBF. А вы сами как думаете? 500 000 команда послать на сервер или одну! Что быстрее? Даже если учесть избыточную "болтливость" формата XML для "проской" таблицы, то все равно ответ на ваш вопрос, как мне кажестся, очевиден! С уважением, Алексей P.S. А если еще учесть возможные требования транзакционной целостности добавления ?! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 16:08 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
Ну, надо же и самому иногда думать Вы хотите закачать данные в некую БД. Очевидно, лучше всего и быстрее всего будет использование групповых команд импорта этой самой БД. Следовательно, идете в форум по MySQL на этом сайте и выполняете поиск разных способов импорта данных. Скорее всего, там есть что-нибудь и про импорт из DBF. Я просто не в курсе, поскольку не работал с MySQL. Далее встает вопрос, как запустить эту операцию импорта. Очевидно, надо "попросить" MySQL это сделать. Можно ли это сделать из среды FoxPro? А это уже зависит от выбранного способа импорта и возможностей драйвера ADO или ODBC. Ведь "просить" Вы будете через эти драйвера. PS: Время импорта зависит не столько от количество записей, сколько от общего объема информации (в байтах), которое требуется передать на сервер. Ну, и от способа передачи, разумеется. Кстати, можете попробовать создать CursorAdapter и поиграться его свойством BatchUpdateCount. По сути, это будет аналог передачи нескольких команд Insert-SQL в одном пакете. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 16:15 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
Aleksey-K, Вы мне можете без намёков - а ясно и понятно описать недостатки и преимущества вашего метода? Просто на форуме есть люди которые ваших намёков не поймут! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 16:17 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
Питон33, одной командой - нет, только если это не вызов функции "ZalitTablicuNaServerBystroIBezOshibok" :) Выгрузите dbf в csv, соединитесь с сервером, загрузите через load data. Если есть спецсимволы, выгружайте через delimited ... with delimiter, а в load data придётся прописать ещё пару параметров. Всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 16:46 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
ВладимирМКстати, можете попробовать создать CursorAdapter и поиграться его свойством BatchUpdateCount. По сути, это будет аналог передачи нескольких команд Insert-SQL в одном пакете. тссс, только там, - на фоксклабе не рассказывайте, а то там целое пАкАление писало немыслимые коды по формированию пакетов относительно МС СКЛ от себя: CAD, пакеты строк + sqlExec, для Sql2005 bulkxmlload.prg (Doug Hennig/ upsize wizard - в проекте апсайзвизарда - это для автора примера с иксэмеэль будет полезно) + пример через "мульку-парамульку" (встречался в моей практике) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 17:08 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
прошелмимо, В тексте программы есть такая фраза * чтобы работало, - установить VFPODBC.msi Это к чему ваще?? Разве он нам нужен для работы с MySQL на линухе? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 18:04 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
+ все-же примерчик от Дага Хеннига через ком-компонент для мс скл ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 18:05 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
Питон33прошелмимо, В тексте программы есть такая фраза * чтобы работало, - установить VFPODBC.msi Это к чему ваще?? Разве он нам нужен для работы с MySQL на линухе? гы, хто такой твой линух и тем паче майискюэль - мне не известно - выкручивайся сам а примеров я накидал патаму, что от тя поступила такая вводная: Питон33Дайте пример тогда для MSSQL? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 18:08 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
ВладимирМ, из всех - вы более грамотно описали процесс. Не могли бы конкретные примеры дать? На счёт "Попросить мускул" закачать xml тоже поподробнее. Дело в том что в мускуле нет ни каких дополнительных процедур и писать их никто не будет. У нас много клиентов и каждому объяснять как залезть в мускул, да ещё что-то там писать - это очень тяжело. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 18:14 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
Ну, я не работал с MySQL поэтому синтаксис сказать не могу. Надо спрашивать на форуме MySQL. Есть ли там такое вообще. Ну, а чисто теоретически как "просить сервер"? Если установка соединения через ODBC, то это команда SQLExec(). Для MS SQL, например, это примерно так Код: plaintext
Если соединение установлено через ADO, то, соответственно, надо будет создавть COM-объекты вроде ADO.Command и формировать соответствующие команды. Наконец, вероятно, Вы этот момент не вполне поняли, но можно в одном пакете передавать несколько команд. Примерно так Код: plaintext 1. 2. 3. 4.
Надо только уточнить, каким символом разделяются команды в среде MySQL. Будет ли достаточно пробела (как в приведенном примере) или надо что-то еще ставить. Например, точку с запятой или перевод строки Кроме того, в данном варианте, как правило, есть ограничение на размер подобного пакета. Т.е. на количество символов в переменной strCommand. Обычно где-то в районе 8К, но опять же надо уточнять по документации драйвера Примерно это и реализует настройка BatchUpdateCount, если Вы организуете взаимодействие с сервером через объект CursorAdapter. Т.е. Вы работаете с CursorAdapter как с обычной таблицей FoxPro, а он внутри себя сам сформирует нужные пакеты и пошлет их на сервер. И наконец, если задача разовая, то стоит ли вообще заморачиваться оптимизиацией? 500 тысяч строк закачается относительно быстро. Не думаю, что будет дольше, чем минут 10..20 при самом худшем раскладе PS: Можно пойти по пути создания командных файлов. Т.е. пользователь должен сформировать определенный файл и положить его в определенную директорию (пункт меню в приложении). Затем формируется командный файл и запускается через RUN. Но, опять же, если такое есть для MySQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 18:56 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
ВладимирМ, Дело в том что 500 000 записей по одной команде загонять в MySQL - длится сутки даже по localhost. В общем то вы меня навели одну на мысль: Делать наверно просто через SQLPREPARE() весь цикл операций по передаче. А затем дать SQLEXEC() всего один раз в конце и будет как мне кажется быстрее. (но это только предположение) Разница в скорости думаю будет существенной. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 20:05 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
Питон33, это может быть быстрее, но реально быстрее будет через load data. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 20:13 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
Питон33Дело в том что 500 000 записей по одной команде загонять в MySQL - длится сутки даже по localhost. "Не верю" (с) Не может такое относительно небольшое количество записей столько времени обрабатываться. Что-то Вы не договариваете. Какие-то у Вас идут дополнительные обработки не связанные с закачкой данных на сервер. Может, приведете пример кода, как Вы это делаете? Питон33Делать наверно просто через SQLPREPARE() весь цикл операций по передаче. А затем дать SQLEXEC() всего один раз в конце и будет как мне кажется быстрее. (но это только предположение) Да какой там план выполнения у команды вставки одной записи! Откуда возьмется ускорение-то? Впрочем, может это какая фича именно MySQL? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 23:35 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
tanglir, Пример можно? load data нету такой команды в фоксе. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 23:37 |
|
КАК ПЕРЕДАТЬ ВСЮ ТАБЛИЦУ DBF ОДНОЙ КОМАНДОЙ - ИЗ VFP В MYSQL ???
|
|||
---|---|---|---|
#18+
ВладимирМ"Не верю" (с) Не может такое относительно небольшое количество записей столько времени обрабатываться. Что-то Вы не договариваете. Какие-то у Вас идут дополнительные обработки не связанные с закачкой данных на сервер. Поверьте это так. 500 000 записей, по одной записи обновляются в цикле командой MySQL UPDATE по уникальному ключу. Процесс длится сутки. ВладимирМДа какой там план выполнения у команды вставки одной записи! Откуда возьмется ускорение-то? Впрочем, может это какая фича именно MySQL? Ускорение будет, так как выполняются все команды сразу, а не по отдельности SQLEXEC() Каждый раз SQLEXEC() ожидает ответа от сервера, иными словами 500 000 раз тормозит. SQLPREPARE() просто подготавливает для выполнения, а выполнение будет в самом конце по команде SQLEXEC(). ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 23:48 |
|
|
start [/forum/topic.php?fid=41&msg=37091569&tid=1584223]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
others: | 295ms |
total: | 454ms |
0 / 0 |