Получение от n до n строк из db2 - PullRequest
0 голосов
/ 28 февраля 2019

Мне нужно разбить огромную таблицу на куски.

Выборка данных из DB2 и обработка в SSIS

итерация 1: получить первые 10 строк и обработать их

итерация 2: получить следующие 10 строк (11-20) и обработать их

итерация 3: получить следующие 10 строк (21-30) и обработать их

и т. Д.на счет до (*) таблицы

Можно ли получить от n db2

top n до n строк, я ищу запрос, как показано ниже,

выберите * из таблицы выборки от 10 до 20 строк

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Используйте опцию OFFSET x FETCH FIRST y ROWS ONLY для чтения данных по блокам

Чтобы воспользоваться этим методом в SSIS, вы должны выполнить следующие шаги:

  1. Добавить задачу «Выполнить SQL»чтобы получить количество строк и сохранить его в переменной.
  2. Добавить контейнер Forloop для циклического перемещения по диапазону чисел до достижения числа строк
  3. Внутри контейнера Forloop добавьте задачу потока данныхкоторый содержит источник OLEDB или назначение ODBC и OLEDB
  4. В источнике OLEDB / ODBC установите режим доступа равным команде SQL и определите выражение, подобное:

    "SELECT * FROM MYTABLE ORDER BY ID_COLUMN
    OFFSET " + (DT_WSTR,50)@[User::IncrementValue] + "
    FETCH FIRST " + (DT_WSTR,50)@[User::IncrementValue] + " ROWS ONLY" 
    

Следующий ответ представляет собой пошаговое руководство по загрузке данных кусками из SQLite, вы можете просто изменить синтаксис команды SQL, как указано выше:

Ссылки

0 голосов
/ 28 февраля 2019

https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.sql.ref.doc/doc/r0061832.html

db2 "select row_number() over(order by tabschema, tabname)
,    tabschema::char(10), tabname::char(30)
from syscat.tables
order by tabschema, tabname 
offset 10 rows 
fetch first 10 rows only"

1                    2          3                             
-------------------- ---------- ------------------------------
                  11 SYSCAT     COLCHECKS                     
                  12 SYSCAT     COLDIST                       
                  13 SYSCAT     COLGROUPCOLS                  
                  14 SYSCAT     COLGROUPDIST                  
                  15 SYSCAT     COLGROUPDISTCOUNTS            
                  16 SYSCAT     COLGROUPS                     
                  17 SYSCAT     COLIDENTATTRIBUTES            
                  18 SYSCAT     COLLATIONS                    
                  19 SYSCAT     COLOPTIONS                    
                  20 SYSCAT     COLUMNS                       

  10 record(s) selected.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...