none
Перенос изменённых данных в таблицы через пакет SSIS..... RRS feed

  • Вопрос

  • Здравствуйте!

    Я переношу таблицы из MSSQL 2005 в Oracle через пакет SSIS и данные переносятся очень долго , поэтому я решила переносить только изменённые данные в таблице, но как мне осуществлять проверку в пакете, что-то не соображу пока, подскажите , плиз)

    • Перемещено SachinW 1 октября 2010 г. 22:48 MSDN Forums Consolidation (От:Сообщество SQLClub.ru)
    23 марта 2010 г. 8:56

Ответы

  • А как вы определяете, что данные изменились? Если никак, то тяжело придётся. Вам придётся самой реализовать сценарий отслеживания изменений. Либо через триггеры, либо с момент вставки/изменения данных из таблицы, вам нужно фиксировать какие данные изменились и записывать их в другую, специальную таблицу, которая по сути нужна будет только для того, чтобы хранить измения.

    PS: В 2008 сиквеле есть такие механизмы как Change Tracking и Change Data Capture, которые позволяют эффективно отслеживать изменения.

    • Помечено в качестве ответа I.Vorontsov 25 марта 2010 г. 8:47
    23 марта 2010 г. 11:27
  • для того чтобы сравнивать версии можно поступить следующим образом.

    интуитивный способ - заводите в таблице колонку с датой, при изменении данных - изменяете и дату.

    такая же колонка с датой есть на стороне оракла. таким образом сравнивая даты, вы поймете - стоит ли грузить эту строку или нет.

    другой неменее интуитивный способ - хеш.

    логика таже самая, на стороне куда переносятся данные есть колонка с хешем, либо ее можно считать на лету.

    сравниваете хеши данных и принимате решение о заливке.

    сложность в том, что вам придется запрашивать эти данные с оракла(хеш или дата, ID записи если совпадают),

    функция хеша в сиквеле есть следующая HASHBYTES('MD5', CAST(col1 AS VARBINARY(MAX))

    • Помечено в качестве ответа I.Vorontsov 25 марта 2010 г. 8:47
    23 марта 2010 г. 12:55
  • можно другой подход. заводите битовую колонку(или таблицу) - была ли загружена запись.

    на стороне SQL Server.

    в SSIS пакете - при выборе данных для загрузки - фильтр по этой колонке.

    все, таким образом будут загружаться только новые или обновленные данные.

    • Помечено в качестве ответа I.Vorontsov 25 марта 2010 г. 8:47
    23 марта 2010 г. 13:05

Все ответы

  • А как вы определяете, что данные изменились? Если никак, то тяжело придётся. Вам придётся самой реализовать сценарий отслеживания изменений. Либо через триггеры, либо с момент вставки/изменения данных из таблицы, вам нужно фиксировать какие данные изменились и записывать их в другую, специальную таблицу, которая по сути нужна будет только для того, чтобы хранить измения.

    PS: В 2008 сиквеле есть такие механизмы как Change Tracking и Change Data Capture, которые позволяют эффективно отслеживать изменения.

    • Помечено в качестве ответа I.Vorontsov 25 марта 2010 г. 8:47
    23 марта 2010 г. 11:27
  • для того чтобы сравнивать версии можно поступить следующим образом.

    интуитивный способ - заводите в таблице колонку с датой, при изменении данных - изменяете и дату.

    такая же колонка с датой есть на стороне оракла. таким образом сравнивая даты, вы поймете - стоит ли грузить эту строку или нет.

    другой неменее интуитивный способ - хеш.

    логика таже самая, на стороне куда переносятся данные есть колонка с хешем, либо ее можно считать на лету.

    сравниваете хеши данных и принимате решение о заливке.

    сложность в том, что вам придется запрашивать эти данные с оракла(хеш или дата, ID записи если совпадают),

    функция хеша в сиквеле есть следующая HASHBYTES('MD5', CAST(col1 AS VARBINARY(MAX))

    • Помечено в качестве ответа I.Vorontsov 25 марта 2010 г. 8:47
    23 марта 2010 г. 12:55
  • Спасибо за идейки, буду пробовать и эксперементировать))
    23 марта 2010 г. 13:02
  • можно другой подход. заводите битовую колонку(или таблицу) - была ли загружена запись.

    на стороне SQL Server.

    в SSIS пакете - при выборе данных для загрузки - фильтр по этой колонке.

    все, таким образом будут загружаться только новые или обновленные данные.

    • Помечено в качестве ответа I.Vorontsov 25 марта 2010 г. 8:47
    23 марта 2010 г. 13:05