|   |   | 
| 
 | ADODB.Connection записать таблицу значений | ☑ | ||
|---|---|---|---|---|
| 0
    
        MiniMuk 18.07.13✎ 08:20 | 
        В 1с запросом получаю набор данных, хочу сохранить во внешнюю таблицу.
  Делаю, сохраняю в таблицу. Таблица = Запрос.Выполнить().Выгрузить(); //Подключаюсь к базе 
 хочу сохранить таблицу, как можно сделать кроме Какаятострока ="insert into " + КакаятоБаза + ".dbo.КакаятоТаблица (Поле1,Поле2) |values ('Значение1', 'Значение2') |, ('Значение2', 'Значение4' )"; try Конект.Execute("BEGIN TRANSACTION"); Конект.Execute("set implicit_transactions off"); Конект.Execute(Какаятострока) ; Конект.Execute("Commit"); except Конект.Execute("Rollback"); Message(ОписаниеОшибки()); endtry; Кроме как формировать Какаятострока в цикле есть еще способы? СП по функциям ADODB.Connection есть читаемая? | |||
| 1
    
        shuhard 18.07.13✎ 08:24 | 
        (0) Insert такой возможности не представляет, только Select     | |||
| 2
    
        MiniMuk 18.07.13✎ 08:31 | 
        (1) Запрос я формирую в терминах 1с. Тоесть у меня там полноценные ссылки, перечисления, значения. На выходе  плоская таблица для excel. 
  
 Было бы проще конечно весь запрос поместить в insert | |||
| 3
    
        shuhard 18.07.13✎ 08:33 | 
        (2) используй булк, то ни какой гарантии, что это будет быстрее нет     | |||
| 4
    
        MiniMuk 18.07.13✎ 08:36 | 
        (3) это что? пни в сторону? мне не обязательно быстрее, это будет регламетное задание раз в сутки. просто боюсь записей будет много строка запроса ну ооочень длинная получиться     | |||
| 5
    
        shuhard 18.07.13✎ 08:39 | 
        (4) откуда много строк, строка одна, выполняемая в цикле     | |||
| 6
    
        tplink741nd 18.07.13✎ 08:41 | 
        (5) а зачем в цикле делать?     | |||
| 7
    
        MiniMuk 18.07.13✎ 08:43 | 
        (5) ну к примеру я получил запросом 2222 строки. у меня в inser секция values  будет 2222 скобок  values ('Значение1', 'Значение2'), ('Значение2', 'Значение4' )('Значение1', 'Значение2'), ... 2222 раза     | |||
| 8
    
        Серго62 18.07.13✎ 08:44 | 
        (0) Не знаю поможет или нет, но есть объект ADO.Recordset с ним можно работать почти как с таблицей значений. Почитать можно здесь http://www.askit.ru/custom/progr_admin/m13/13_03_01_ado_recordset_opening.htm     | |||
| 9
    
        tplink741nd 18.07.13✎ 08:46 | 
        (7) можно это делать так 
  insert табл1 (поле1, поле2, поле3) select поле1, поле2, поле3 from табл1 т.е. селектом ты получаешь 2222 строк а верхний инсерт их сразу пихает в нужную таблицу, как-то так | |||
| 10
    
        shuhard 18.07.13✎ 08:46 | 
        (7) ещё раз
  что мешает сделать 2222222 Insert по одной строке, а не один на 222222 строк ? | |||
| 11
    
        tplink741nd 18.07.13✎ 08:48 | 
        (10) для чего это делать?     | |||
| 12
    
        tplink741nd 18.07.13✎ 08:48 | 
        по одной строке?     | |||
| 13
    
        tplink741nd 18.07.13✎ 08:50 | 
        в (9) ошибся  - в селекте естественно указывается таблица из которой нужно читать данные, а в инсерте таблица - в которую записывать     | |||
| 14
    
        MiniMuk 18.07.13✎ 09:01 | 
        (9) inser в АДО а селект в 1с? ничего не смущает     | |||
| 15
    
        MiniMuk 18.07.13✎ 09:04 | 
        (10) Тоже вариант, просто нухочется не влоб задачу, заодно ченибудь новое узнать. Пойду читать можно ли (8) собственно как данные из  ADO.Recordset  читать понятно, а можно ли туда запихать пойду читну     | |||
| 16
    
        Серго62 18.07.13✎ 09:08 | 
        (15) Можно и читать и добавлять     | |||
| 17
    
        ДенисЧ 18.07.13✎ 09:16 | 
        (10) Мешает ограничение на размер запроса в адо...
  (0) переходи на 77, там эо реализовано | |||
| 18
    
        MiniMuk 18.07.13✎ 09:23 | 
        (17) Клево, почти закончили переход на 8.2 а тут, вау, на 7.7 такая плюшка есть, айда обратно?! 7.7 ну подтупливала сильно     | |||
| 19
    
        MiniMuk 18.07.13✎ 09:28 | 
        (17) я ПОДОЗРЕВАЛ что есть ограничение     | |||
| 20
    
        shuhard 18.07.13✎ 09:33 | 
        (17)[Мешает ограничение на размер запроса в адо... ]
  открой для себя метод AddNew | |||
| 21
    
        Jaap Vduul 18.07.13✎ 09:44 | 
        2000 строк - это не много, можно и циклом по одной строке. Когда строк действительно много, то данные из 1цэ сохраняем в текстовый файл, а через ADO вызываем bulk insert - будет очень быстро.     | |||
| 22
    
        ДенисЧ 18.07.13✎ 09:44 | 
        (20) Имеется в виду - сформировать один запрос на всю базу. Вот тут-то и...     | |||
| 23
    
        Jaap Vduul 18.07.13✎ 09:47 | 
        (20) Видимо, имелось в виду запихать все 2000 инсертов в один батч.     | |||
| 24
    
        shuhard 18.07.13✎ 09:48 | 
        (23) булк предложен в (3) =)     | |||
| 25
    
        MiniMuk 18.07.13✎ 09:55 | 
        (24) можно кратенький пример?     | |||
| 26
    
        MiniMuk 18.07.13✎ 09:56 | 
        (21) Много это сколько? сейчас пытаюсь представить масштабы происходящего     | |||
| 27
    
        Jaap Vduul 18.07.13✎ 10:13 | 
        (25) http://msdn.microsoft.com/ru-ru/library/ms188365.aspx
  (26) over 9000 | |||
| 28
    
        MiniMuk 18.07.13✎ 10:42 | 
        (27) Оромное, просто шикарно     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |