Текущий архив: 2008.02.03;
Скачать: CL | DM;
ВнизВставка результата запроса из DBF в MSSQL Найти похожие ветки
← →
Stas © (2008-01-04 15:34) [0]С помощью JET :)
Используя JET я подключаюсь к DBF файлику, можно ли выполнить INSERT INTO в таблицу MSSQL ?
← →
Iskander © (2008-01-04 16:38) [1]Пофиг чем подключаешься к DBF-файлику. Insert в таблицу БД всегда можно сделать. В чем собственно вопрос?
← →
Johnmen © (2008-01-04 16:52) [2]Вопрос предельно ясен - автору нужен гетерогенный запрос.
Как это в JET помнит один sniknik. :)
← →
Anatoly Podgoretsky © (2008-01-04 16:59) [3]Можно
← →
Stas © (2008-01-04 17:06) [4]Johnmen © (04.01.08 16:52) [2]
Я как раз надеялся на него...
Anatoly Podgoretsky © (04.01.08 16:59) [3]
А каким образом? помню что нужно прописать строку подключения к MSSQL, но вот как?
← →
sniknik © (2008-01-04 17:06) [5]нет.
подключение к dBase Jet делает через исам dBase, если ты подключился непосредственно к dBase то находишься как бы внутри исама, а к MSSQL нужно обращение к другому (ODBC), а обращения между исамами не допускаются (исключая Excel, понятно думаю почему (иначе бы невозможно было из него выгрузить в dbf/и тд.))
в общем, резюме, находясь "внутри" исама dBase ты можеш делать запросы только к Access (родному ядру Jet) и Excel.
"внутри" Access или Excel можно практически к любой базе, в том числе и перекрестно обращаяссь к разным исамам т.е. в твоем случае из dBase в MSSQL.
имхо, лучше конечно подключится к MSSQL и использовать его возможности. (OPENROWSET/OPENDATASOURCE/линкед сервер/...)
> Пофиг чем подключаешься к DBF-файлику.
не говорите о чем не знаете. то чем подключаешься, движок, важнейшая вещь. одна из "центровых" я бы сказал. возможности одного движка <> возможностям другого. никогда. похожи бывают, но всегда чемто отличаются даже если работают с одним типом таблиц.
← →
sniknik © (2008-01-04 17:07) [6]> Как это в JET помнит один sniknik. :)
не думаю, есть еще тот кто это написал... ;о).
← →
Stas © (2008-01-04 17:23) [7]sniknik © (04.01.08 17:06) [5]
Силами MSSQL не получится т.к. экспорт выполняется на клиентской машине из приложения (пользователь указал файлик и перекачал его).
Сейчас это делается открываю в одном запросе dbf, формирую строку
Insert into Mytable Select ... Union Select.... И выполняю с помощью ADOCommand подключенного к MSSQL.
Хотелось бы упростить приложение.
← →
sniknik © (2008-01-04 17:26) [8]Anatoly Podgoretsky © (04.01.08 16:59) [3]
> Можно
все таки нет. проверил.
(тут только помнить не достаточно, мало ли, что они там на изменяли с тех пор как в последний раз проверял... а был тогда у Jet-а SP6, а счас уже... х.з. после 8го и не смотрел (может этот последний))
← →
sniknik © (2008-01-04 17:31) [9]> Хотелось бы упростить приложение.
работает? не трогай.
или претензии к чему нибудь есть? например к размеру получаемого запроса (не переваливаешь еще за ограничение по размеру?)
сделал бы просто цикл, куда проще то.
← →
Stas © (2008-01-04 17:44) [10]Да можно и просто по циклу. Просто сталкивались уже несколько раз, то символ непонятный, запрос не срабатыват, то двоеточие как параметр определяется, то вместо точки запятая, то 1 одинарная кавычка...
← →
sniknik © (2008-01-04 17:52) [11]> то символ непонятный
> то вместо точки запятая
> о 1 одинарная кавычка...
параметры надо использовать, а не составлять гигантские запросы с "все включено в".
← →
DimonS (2008-01-05 04:49) [12]
ADOCom.CommandText:="INSERT INTO Svod ( Tn, Summa1, [Number], PL, Repair ) IN """+ini.ReadString("BD","BD","")+"\bonus.mdb"" SELECT P60, ZO, P57, P73, ZRE FROM [Zar_TN.dbf] IN """+ExtractFilePath(ParamStr(0))+"""[dBase IV;]";
ADOCom.Execute;
Ну такой код работает, правда, копирование из dBase в Access. В MSSQL не сработает?
← →
sniknik © (2008-01-05 11:55) [13]> Ну такой код работает, правда, копирование из dBase в Access. В MSSQL не сработает?
Access - основное ядро, dBase - исам, дочерняя ветка, MSSQL(ODBC) еще один исам.
почитай [5], или если читал, перечитай на этот раз внимательно.
← →
Anatoly Podgoretsky © (2008-01-05 12:07) [14]
> sniknik © (04.01.08 17:26) [8]
> Anatoly Podgoretsky © (04.01.08 16:59) [3]
> > Можно
> все таки нет. проверил.
Как же нет, сам же написал OPENROWSET/OPENDATASOURCE/линкед сервер
dBase это один из основных форматов при экспорте/импорте. Вариантов работы просто множество. Не говоря уже о рабоче крестьянском методе построчного чтения из одного источника и построчной записи в другой источник.
← →
sniknik © (2008-01-05 13:51) [15]> Как же нет, сам же написал OPENROWSET/OPENDATASOURCE/линкед сервер
так это из подключения к MSSQL, т.е. когда работает его сервер, а ему хочется из подключения даже не к Access-у (было бы возможно), а к подчиненному от аксесса исаму - dBase у которого только один "канал" назад к родительскому Access-у(/Excel-ю) и нет доступа к другим исамам.
> Не говоря уже о рабоче крестьянском методе построчного чтения из одного источника и построчной записи в другой источник.
ну, вот только это и остается, если не менять чтото в корне (например работать с другим подключением/типом базы)
но это уже будет не одно командный insert into ... select ... from ... для всех записей таблицы. (а хочется ему именно этого)
← →
sniknik © (2008-01-05 13:58) [16][0]
> Используя JET я подключаюсь к DBF файлику
т.е. подключение у него вида
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\;Extended Properties=dBase IV;Persist Security Info=False
вот из него и нужен гетерогенный запрос с участием MSSQL.
выделенное означает, что откроется ядро Jet и далее управление перейдет к "под ядру" dBase... что это значит см. выше. :)
← →
MsGuns © (2008-01-05 14:35) [17]DTS MsSQL Server
Страницы: 1 вся ветка
Текущий архив: 2008.02.03;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.048 c