-
Находил похожие темы, но желательно услышать более практичный ответ.
Как перенести данные с таблицы на SQL-сервере в локальную дбф-ку с наибольшей скоростью?
Пока размер позволял, сначала создавал табличку с такими же полями и перекидывал циклом аппенды. Сейчас база разрослась, в некоторых табличках по полмиллиона записей. Видел в фоксе как-то делали сразу, результат запроса сохраняется как таблица.
Есть ли такие отимальные решения на делфе или на худой конец, может исходники ADODB кто ковырял?
-
DataPump
-
Это видимо какой-то инструмент по переносу данных? Тогда мне следует немного уточнить вопрос: "Как переносить данные?", а не "перенести" Это должно делается в определенные моменты работы программы.
-
> может исходники ADODB кто ковырял?
нафига тебе исходники? тем более если их кто нибудь ковырял...
все делается простым гетерогеным запросом, MSSQL позволяет, можно прямо из всеми любимого Query Analyzer-а. или другого инструмента выполняющего запросы... например ADOConnrction + ADOCommand положенные на форму, ну и подключенные к MSSQL естественно.
-
а ну да, локально... и с сервера наверняка доступа нет к локальным папкам, тогда с "другой стороны" берем access (jet) из него два ISAM-а (интерфейс для тех же самых гетерогенных запросов) один на MSSQL другой на dbf, и опять один запрос.
-
> все делается простым гетерогеным запросом, MSSQL позволяет,
> можно прямо из всеми любимого Query Analyzer-а. или другого
> инструмента выполняющего запросы... например ADOConnrction
> + ADOCommand положенные на форму, ну и подключенные к MSSQL
> естественно.
Каким же образом сформировать локальную таблицу? 500к записей в оперативной памяти "подтормаживать" начинают.
> тогда с "другой стороны" берем access (jet) из него два
> ISAM-а (интерфейс для тех же самых гетерогенных запросов)
> один на MSSQL другой на dbf, и опять один запрос.
Покажи запрос-то хоть примерно
-
> примерно
???
как хочеш. из парадокса в дбейс, очень старый запрос, как можно видеть
INSERT INTO [dBase IV;DATABASE=D:\].[3#DBF] ([SIZE],ARTIKL) SELECT MESURIMENT, 'RUB' FROM [Paradox 3.x;DATABASE=D:\].[3#DB]
-
ну и, ладно, примерно как запрос из акцесса к мсскл
SELECT * FROM [ODBC;DSN=MyODBCLink;UID=DB_USER;PWD=my_password;DATABASE=my_db_name;].DB_USER.T ABLE_NAME
сложить 2 примерных запроса, может быть и получится один примерно точный.
-
> [2] Morpheus (25.11.08 21:53)
Может имеет смысл задуматься о переводе "принимающей" программы на работу с сервером напрямую? Сегодня полмиллиона записей, через год несколько миллионов - в конце концов сервер только и будет заниматься передачей данных в гиговые дбф-ки.
-
С MSSQL поставляется целый DTS для таких целей.
Импортируешь его библиотеку типов в делфи и переносишь, что-угодно, куда-угодно и как-угодно.
-
> Импортируешь его библиотеку типов в делфи и переносишь,
> что-угодно, куда-угодно и как-угодно.
Зачем? Прямо на стороне сервера пакет формируешь, вешаешь на job и вуаля.
-
все это хорошо, и джоб и дтс (хотя одну табличку я бы предпочёл просто гетерогенным запросом), но тогда не выполняется условие "в локальную дбф-ку", тогда ее придется класть куда нибудь на сервере.
-
> sniknik © (26.11.08 12:26) [11]
> дтс (хотя одну табличку я бы предпочёл просто гетерогенным
> запросом), но тогда не выполняется условие "в локальную
> дбф-ку"
С чего бы это не выполняется?
-
> С чего бы это не выполняется?
> Импортируешь его библиотеку типов
ну либо придется ставить ее везде на клиентах.
-
> ну либо придется ставить ее везде на клиентах.
Разве DTS по-умолчанию не ставиться с клиентом? Не помню, просто.
-
с чего бы это? хотя не знаю, както не приходилось пользоваться иначе чем на сервере, вот DMO приходилось, и его точно нужно ставить, т.что другие части вероятнее всего тоже.