powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Добавление данных в базу MSSQL2005
16 сообщений из 16, страница 1 из 1
Добавление данных в базу MSSQL2005
    #34855854
Учу T-SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, есть ли способ, обращаясь к MSSQL серверу, добавлять данные в таблицу на сервере не построчно (не SQLEXEC(nh,"INSERT INTO base VALUES ('a','b'))). Есть необходимость ежедневно из фокса переносить данные из фоксовой таблицы в SQL'ную. Проблема в том, что данные построчно переносятся очень долго, а другого способа я пока не нашёл. Вот что тупо хочется, так это передать всю таблицу в SQL, а там (в хранимке ли, иль ещё каким способом) добавлять в таблицу. Просьба ногами не пинать и не мучить сильно :)
...
Рейтинг: 0 / 0
Добавление данных в базу MSSQL2005
    #34855865
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Добавление данных в базу MSSQL2005
    #34856007
Учу T-SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Sizov. Тынц

Шiро дякую :)
...
Рейтинг: 0 / 0
Добавление данных в базу MSSQL2005
    #34856349
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно использовать Linked Server c VFP OleDbProvider - дале пишется job (обычно вызов SP) и через положенные интервалы времени происходит добавление данных в базу данных MS SQL Server... Это очень просто, не поленитесь изучить один раз, потом можно лего все это использовать постоянно :)

Good luck!

P.S. В SP используется привычный нам синтаксис - INSERT (SQL) FROM...
...
Рейтинг: 0 / 0
Добавление данных в базу MSSQL2005
    #34856513
Декоратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я использую пакеты DTS. Просто и надежно как отбойный молоток, и кстати так же можно поместить в JOB.
...
Рейтинг: 0 / 0
Добавление данных в базу MSSQL2005
    #34856848
Учу T-SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey ChМожно использовать Linked Server c VFP OleDbProvider - дале пишется job (обычно вызов SP) и через положенные интервалы времени происходит добавление данных в базу данных MS SQL Server... Это очень просто, не поленитесь изучить один раз, потом можно лего все это использовать постоянно :)

Линкед сервер использовал в проекте на C# - это несложно. В данном случае на фоксе задача не позволяет его использовать, так как данные в SQL нужно добавлять из файлов со случайными именами на базе SYS(2015), так что в момент запуска job'а я не буду иметь представление об именах таблиц.

Sergey ChP.S. В SP используется привычный нам синтаксис - INSERT (SQL) FROM...

В данном контексте не понял "SP" - это что?
...
Рейтинг: 0 / 0
Добавление данных в базу MSSQL2005
    #34856856
Учу T-SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДекораторЯ использую пакеты DTS. Просто и надежно как отбойный молоток, и кстати так же можно поместить в JOB.

А про это можно подробнее узнать?
...
Рейтинг: 0 / 0
Добавление данных в базу MSSQL2005
    #34856866
Декоратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В ветке MS SqlServer поиск по DTS решит все ваши проблемы.
...
Рейтинг: 0 / 0
Добавление данных в базу MSSQL2005
    #34856867
Учу T-SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Учу T-SQL Sergey ChP.S. В SP используется привычный нам синтаксис - INSERT (SQL) FROM...

В данном контексте не понял "SP" - это что?

Не сразу сообразил, что вы имели в виду хранимые процедуры.
...
Рейтинг: 0 / 0
Добавление данных в базу MSSQL2005
    #34856915
Учу T-SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДекораторВ ветке MS SqlServer поиск по DTS решит все ваши проблемы.

А термин расшифровать можете? А то там информации много, но отвечающие и спрашивающие считают, что всё это всем известно :)
...
Рейтинг: 0 / 0
Добавление данных в базу MSSQL2005
    #34856920
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Учу T-SQL Линкед сервер использовал в проекте на C# - это несложно. В данном случае на фоксе задача не позволяет его использовать, так как данные в SQL нужно добавлять из файлов со случайными именами на базе SYS(2015), так что в момент запуска job'а я не буду иметь представление об именах таблиц...
Какая ерунда - Вы босс, соответсвенно можно давать осмысленные имена на базе, например, интервалов времени а в C# легко можно прочитать, что добавлять, затем через вызов SP в качестве параметра передавать имя файла...

P.S. В MS SQL Server 2005 можно все прямо сделать в самом сервере, так как он поддерживает .NET 2.0 (хотя меня смутно терзают соменения, что что-то подобное можно сделать и через DTS (то есть нам не надо изобретать велосипед))
...
Рейтинг: 0 / 0
Добавление данных в базу MSSQL2005
    #34858369
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе, Sergey Sizov дал уже ссылку на работу через XML строку с набором данных
Но можешь еще тут посмотреть: http://www.caws.atnet.ru/vfox/sql3.html#sql_tabl_ref
Вариант с XML там тоже рассматривается.
С уважением, Алексей
...
Рейтинг: 0 / 0
Добавление данных в базу MSSQL2005
    #34858436
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Учу T-SQL ДекораторВ ветке MS SqlServer поиск по DTS решит все ваши проблемы.

А термин расшифровать можете? А то там информации много, но отвечающие и спрашивающие считают, что всё это всем известно :)
В MS SQL Server 2005 он заменен на Integration Services (SSIS) ...

MSDNIntegration Services is a platform for building high performance data integration and workflow solutions, including extraction, transformation, and loading (ETL) operations for data warehousing.

Integration Services includes graphical tools and wizards for building and debugging packages; tasks for performing workflow functions such as FTP operations, SQL statement execution, and e-mail messaging; data sources and destinations for extracting and loading data; transformations for cleaning, aggregating, merging, and copying data; a management service, the Integration Services service, for administering Integration Services packages; and application programming interfaces (APIs) for programming the Integration Services object model.
...
Рейтинг: 0 / 0
Добавление данных в базу MSSQL2005
    #34858482
Учу T-SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksey-KВ принципе, Sergey Sizov дал уже ссылку на работу через XML строку с набором данных
Но можешь еще тут посмотреть: http://www.caws.atnet.ru/vfox/sql3.html#sql_tabl_ref
Вариант с XML там тоже рассматривается.

Уже поглядел :)
...
Рейтинг: 0 / 0
Добавление данных в базу MSSQL2005
    #34860407
Учу T-SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите ещё такой момент: на SQL сервере есть процедура, которая принимает идентификатор записи и другие параметры и, в зависимости от наличия такого идентификатора в таблице, либо делает UPDATE либо INSERT. Эта процедура работает без нареканий. Теперь в другой процедуре я принимаю параметром XML, сформированный CURSORTOXML и создаю временную таблицу SELECT ... OPENXML ... INTO #_temp. Теперь есть желание передать каждую строку из полученной временной таблицы в вышеописанную процедуру. Как это правильно сделать? Надо организовать во второй процедуре какой-то цикл (как?)? Или можно написать что-то вроде EXECUTE my_Procedure SELECT f1,f2,f3 FROM #_temp?

Помогите найти оптимальное решение.
...
Рейтинг: 0 / 0
Добавление данных в базу MSSQL2005
    #34861479
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Учу T-SQLПодскажите ещё такой момент: на SQL сервере есть процедура, которая принимает идентификатор записи и другие параметры и, в зависимости от наличия такого идентификатора в таблице, либо делает UPDATE либо INSERT. Эта процедура работает без нареканий. Теперь в другой процедуре я принимаю параметром XML, сформированный CURSORTOXML и создаю временную таблицу SELECT ... OPENXML ... INTO #_temp. Теперь есть желание передать каждую строку из полученной временной таблицы в вышеописанную процедуру. Как это правильно сделать? Надо организовать во второй процедуре какой-то цикл (как?)? Или можно написать что-то вроде EXECUTE my_Procedure SELECT f1,f2,f3 FROM #_temp?

Помогите найти оптимальное решение.
Я думаю, что самое простое, это организовать цикл с помощью серверного курсора в первой процедуре по временной таблице, которая была заполнена через OPENXML, а при вызове второй, использовать переменные, которые заполняет команда FETCH. Кстати, в этом случае совсем не обязательно создавать временную таблицу. Можно курсор организовать по результатам запроса к OPENXML.
Например:
Код: 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.
CREATE PROCEDURE dbo.my_Procedure_Outer
     ...
     ...
     @XMLSTR TEXT = NULL, -- Строка XML

DECLARE @RESULT INT,
, @AktMBPRash_ID INT
, @Ost_ID_Rash INT
, @Kvo_Need DECIMAL( 18 , 3 )
, @TYPE_IN_DOK TINYINT
, @PART_STR_ID INT
...
...
EXEC @RESULT = sp_xml_preparedocument @IDXML_LINE  OUTPUT, @XMLSTR
IF (@RESULT <>  0 ) OR (@IDXML_LINE IS NULL)
BEGIN
	ROLLBACK TRANSACTION
	RAISERROR('Ошибка обработки XML',  16 ,  1 )
	RETURN (- 1 ) 
END
DECLARE Docum CURSOR FORWARD_ONLY LOCAL STATIC FOR
  SELECT aktmbprash_id, ostatok_id, kvo_need, type_in_dok, part_str_id
  FROM OPENXML ( @IDXML_LINE, '/VFPData/listout',  2 )
  WITH (aktmbprash_id int, ostatok_id int, kvo_need decimal( 18 , 3 ), type_in_dok tinyint, part_str_id int)
  ORDER BY kvo_need DESC
OPEN Docum
FETCH NEXT FROM Docum INTO @AktMBPRash_ID, @Ost_ID_Rash, @Kvo_Need, @TYPE_IN_DOK, @PART_STR_ID
WHILE @@FETCH_STATUS =  0 
BEGIN
...
...
  EXEC @RET_CODE = my_Procedure_Inner  @AktMBPRash_ID, @Ost_ID_Rash, @Kvo_Need,   @TYPE_IN_DOK,  @PART_STR_ID
IF @RET_CODE <  0 
BEGIN
   IF @@TRANCOUNT <>  0 
        ROLLBACK TRANSACTION
   RAISERROR('Ошибка тра-та-та для AktMBPRash_ID=%d!',  16 ,  1 , @AktMBPRash_ID)
   RETURN (- 1 )
END
...
  FETCH NEXT FROM Docum INTO @AktMBPRash_ID, @Ost_ID_Rash, @Kvo_Need, @TYPE_IN_DOK,   @PART_STR_ID
END
CLOSE Docum
DEALLOCATE Docum
EXEC sp_xml_removedocument @IDXML_LINE
...
...
С уважением, Алексей.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Добавление данных в базу MSSQL2005
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]