Закинуть много данных во внешнюю sql-таблицу. #251756


#0 by Луч света в темном
Имеется большая таблица в 1С, получаемая запросом. Надо ее кинуть во внешнюю sql-таблицу. Сейчас это выполняется построчно (обход по каждой строке таблицы) и выполнением хранимой процедуры на стороне внешней sql: ХОтелось бы решить эту процедуру загрузкой таблицы целиком за один раз. А то так очень долго выполняется.
#1 by Господин ПЖ
Как вариант - записать ТЗ в виде файла с разделителями. "Натравить" DTS из состава SQL-сервера на файл. Грузится моментально.
#2 by Луч света в темном
DTS - уот из ит? Где искать?
#3 by Луч света в темном
в каком разделе?
#4 by Господин ПЖ
(+1) А если переделать хранимку на "прямой" скрипт "Insert..." быстрее не будет?
#5 by Господин ПЖ
Data Transformation Services.
#6 by Билли Г
+1 BULK INSERT
#7 by Луч света в темном
Нет, там кроме добавления еще идут проверки. угу, подсказали. сорри, можно про BULK подробнее.
#8 by France
балк не взлетит.. потому как "проверки"..
#9 by Луч света в темном
прошу прощения за назойливость. А как "натравить" DTS на файл? Где этот самый DTS вообще искать?
#10 by Билли Г
"про BULK подробнее" Пишешь данные в файл с разделителями, а потом один раз command.commandtext="BULK INSERT table_name |FROM 'ФайлСРазделителями.csv'
#11 by Билли Г
Тогда и DTS не взлетит...
#12 by vde69
собственно есть еще одно ограничение на размер передоваемого параметра, при больших обьемах будет валиться, мой совет такой: прямая запись во временную таблицу а потом хранимкой фильтруем и т.д.
#13 by Луч света в темном
и если это будет быстро, то можно от проверок отказаться и делать полный перезалив. А порядок следования полей в этом файле в этом случае должен совпадать с порядком следования полей в таблице?
#14 by Луч света в темном
Ага нашел. Есть там визард импорта. Он предлагает в качестве источника выбрать файл с раширением dts. А какой должен быть формат? В качестве разделителей что используется?
#15 by jcage
А проверки на SQL нельзя сделать?
#16 by vde69
есть еще один самый быстрый способ: аналайзером отлавливаешь запрос к 1с и его загоняешь в хранимку той другой базы
#17 by vde69
+ то есть данные будуть идти напрямую в обход 1с
#18 by Луч света в темном
Спасибо всем. Буду пробловать
#19 by Билли Г
(13, 14)"А порядок следования полей в этом файле в этом случае должен совпадать с порядком следования полей в таблице?" - нет. В DTS все опции(соответствия полей, разделители) интерактивно можно настроить, в BULK INSERT через параметры и спец. файл формата.
#20 by Господин ПЖ
Чего-то не то выбрал. Надо было "local packages", потом бросаешь на форму connection №1 "text file" со стрелкой "->", connection №2 "SQL server" и соединяешь их "таском" - data transformation task. В свойствах connection №1 можно выбрать файл с любым расширением.
#21 by sapphire
Обработкой StrBaseSQL.epf с infostart.ru получить структуру БД 8 и скулем залить что нужно
#22 by Луч света в темном
а про bulk и спец. файл формата где почитать? То есть я понимаю, что должно быть два файла: один с данными, другой с описанием формата файла данных, тогда куда в command.commandtext="BULK INSERT table_name |FROM 'ФайлСРазделителями.csv' |WITH ( command.execute; вписать название этого файла формата?
#23 by Господин ПЖ
(+20) В кач-ве разделителя можно юзать что угодно, сам можешь определить.
#24 by Луч света в темном
нет там локал
#25 by Луч света в темном
правой кнопкой на DTS - и там только оупен, импорт и визард.
#26 by Господин ПЖ
Да ладно. Data Transformation Server -> Local Packages... ЗЫ Может он у тебя не установлен? Его в custom setup выбрать можно...
#27 by Tymoha
чет я не нашел ничего похожего на инфостарт :(((
#28 by Луч света в темном
так сервер или сервисы? Я нашел в Managemnt->Legacy->
#29 by Билли Г
У тебя BOL есть? Если есть тогда смотри здесь: mk:@MSITStore:C:Program%20FilesMicrosoft%20SQL%20Server80ToolsBooks sqlref.chm::/ts_ba-bz_4fec.htm И здесь: mk:@MSITStore:C:Program%20FilesMicrosoft%20SQL%20Server80ToolsBooksadminsql.chm::/ad_impt_bcp_9yat.htm
#30 by Господин ПЖ
Data Transformation Services. Сервисы.
#31 by Луч света в темном
в я по правильному пути шел?
#32 by Луч света в темном
возвращаясь ко вчерашнему. Сделал: BULK INSERT ea_copy FROM 'd:123.txt' WITH (FIELDTERMINATOR = ';') Возвращает: Msg 4860, Level 16, State 1, Line 1 Could not bulk insert. File 'd:123.txt' does not exist. Хотя файл там точно есть. И права на него поставил ВСЕМ полные. В чем может быть проблема?
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям