|
Копирование данных в таблицу SQL2000
|
|||
---|---|---|---|
#18+
Как импортировать данные из фоксовских таблиц через интерфейс SQL понятно. Вопрос во в чем. Прога написана на Vfp9. Работаю с представлениями таблиц базы SQL 2000. Есть необходимость записи в одну из таблиц SQL большого числа данных (порядка 400 000) До сих пор, эта задача решалась посредством обычной команды Append From в представление таблицы. Скорость передачи ужасно медленная (с учетом того, что обмен сетевой). Подскажите неразумному как процесс ускорить ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2009, 11:11 |
|
Копирование данных в таблицу SQL2000
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2009, 11:15 |
|
Копирование данных в таблицу SQL2000
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2009, 11:18 |
|
Копирование данных в таблицу SQL2000
|
|||
---|---|---|---|
#18+
Я так понимаю, можно с командной строки воспользоваться утилитой и все в ажуре. А как быть удаленным станциям, у которых даже клиента нет, они и папки на сервере по сути не видят? Подключение через ODBC. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2009, 12:17 |
|
Копирование данных в таблицу SQL2000
|
|||
---|---|---|---|
#18+
Korolyov_S, сходите на forum.foxclub.ru в раздел "Решения". ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2009, 12:30 |
|
Копирование данных в таблицу SQL2000
|
|||
---|---|---|---|
#18+
Korolyov_SЯ так понимаю, можно с командной строки воспользоваться утилитой и все в ажуре. А как быть удаленным станциям, у которых даже клиента нет, они и папки на сервере по сути не видят? Подключение через ODBC. Для добавления команда BULK INSERT делает то же самое что и утилита BCP. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2009, 12:39 |
|
Копирование данных в таблицу SQL2000
|
|||
---|---|---|---|
#18+
По умолчанию, передача данных из Remote View или CursorAdapter в таблицу-источник на сервере происходит по следующей схеме: 1. На сервере открывается транзакция 2. Передается одна измененная (добавленная) строка 3. На сервере закрывается транзакция Далее этот цикл повторяется для каждой измененной/добавленной записи. Ну, для MS SQL, в данном случае, обработку транзакций лучше не трогать (хотя и возможно). Он очень плохо работает с "длинными" транзакциями. Лучше оставить транзакции "короткими". В смысле, окружающие небольшое количество модификаций. А вот что стоит изменить - это количество измененных записей, пересылаемых "за раз" в одном пакете. За это отвечает свойство Remote View с именем BatchUpdateCount. По умолчанию, оно равно 1. Т.е. пересылать за раз одну измененную запись. Но для открытого Remote View его можно изменить следующим образом. Код: plaintext
Данная команда заставит пересылать за раз 100 записей в одном пакете. Ставить слишком большое значение не стоит, поскольку могут быть ограничения на размер пакета. Это определяется свойствами используемого драйвера ODBC. Как правило, все драйверы позволяют пересылать 8 КБ за раз (8 тысяч символов). А вот можно ли больше - надо смотреть описание драйвера или ставить эксперименты. В дизайнере View эту же настройку можно настроить через пункт меню Query \ Advanced Options \ Number of Records to Batch Update Это, разумеется, будет медленнее, чем BCP, но почти не требует изменений в проекте. Хотя, организовывать перекачку 400 тысяч записей на регулярной основе - не очень хорошая идея. Надо бы пересмотреть идеологию работы, чтобы исключить подобные операции. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2009, 13:13 |
|
Копирование данных в таблицу SQL2000
|
|||
---|---|---|---|
#18+
ВладимирМ, с установкой =CursorSetProp("BatchUpdateCount",100,"MyRemoutView") уже игрался. Видимых изменений не прочувствовал. Изменить политику обмена не могу. Данные поступают ежесуточно из другой проги и должны вкатываться для обработки в мою базу. Попробую Bulk Insert ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2009, 13:38 |
|
Копирование данных в таблицу SQL2000
|
|||
---|---|---|---|
#18+
пример реализации выгрузки для КАД, для примера (просто посмотреть), медленнее чем bulk insert, но все же (на определенных объемах скорость сопоставима) могу дать попробовать решение через длл по просьбе в почту Код: 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. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2009, 13:57 |
|
Копирование данных в таблицу SQL2000
|
|||
---|---|---|---|
#18+
автори должны вкатываться для обработки в мою базу. там есть какие-то триггера и условия, которые должны отработать при вставке записей, т.е. необходимо ли выполнять какие-то проверки при добавлении записей? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2009, 13:59 |
|
Копирование данных в таблицу SQL2000
|
|||
---|---|---|---|
#18+
2 Korolyov_S сообщите почту, я вышлю пример ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2009, 14:51 |
|
Копирование данных в таблицу SQL2000
|
|||
---|---|---|---|
#18+
Korolyov_S с установкой =CursorSetProp("BatchUpdateCount",100,"MyRemoutView") уже игрался. Видимых изменений не прочувствовал. У Вас режим буферизации Remote View какой? Строковый или табличный? Т.е. что возвращает =CursorGetProp("Buffering", "MyRemoutView") Если 3 (строковый), то переключитесь на табличный (5). Сброс буфера по команде TableUpdate(.T.) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2009, 16:13 |
|
Копирование данных в таблицу SQL2000
|
|||
---|---|---|---|
#18+
Если необходимо выполнить загрузку данных именно с клиента, то я выполняю эту операцию с помощью сериализации данных в XML, отсылку их на сервер через SQLEXEC как параметр хранимой процедуры сервера и извлечение данных из XML в процедуре с помощью функции OPENXML. Отсылку делаю пакетами по 5000 - 10000 строк (в зависимости от "ширины таблицы"). Если есть возможность загрузку данных переложить на SQL сервера, то воспользуйтесь ссылками на BCP, которые вам дали, или (для выполнения данной операции регулярно) используйте службу DTS. С уважением, Алексей ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2009, 16:17 |
|
|
start [/forum/topic.php?fid=41&fpage=121&tid=1586213]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
106ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 198ms |
0 / 0 |