Работа с меткой времени / датой времени при копировании данных из Oracle на SQL Server с использованием служб SSIS - PullRequest
2 голосов
/ 09 февраля 2010

Я использую SSIS для копирования данных из таблицы в Oracle в таблицу в SQL Server 2005. Преобразование не требуется, поэтому это просто прямая линия, соединяющая источник OLE DB с пунктом назначения OLE DB. Довольно прост и работает, но во время выполнения запись в таблице Oracle содержит значение метки времени года 0002, в результате чего обнаружены ошибки служб SSIS из-за исключения переполнения.

Если я создаю дополнительный столбец в SQL Server с типом данных string и переназначаю его, то это работает нормально. Однако я предпочитаю хранить столбец Datatime и использовать его по назначению. Я в порядке с заменой 0002 года на что-то вроде 1900 или что-то в этом роде. Так, каков лучший способ достичь этого, если-то-еще в SSIS?

Ответы [ 2 ]

7 голосов
/ 09 февраля 2010

Я обычно позволяю Oracle справиться с этим, используя что-то подобное в моем исходном запросе:

CAST( Coalesce (
CASE 
 WHEN TO_CHAR(Effective_Date,'yyyy-mm-dd HH24:MI:SS') < '1900-01-01 00:00:00' 
       THEN TO_DATE('9999-12-31 00:00:00','yyyy-mm-dd HH24:MI:SS') 
 ELSE Effective_Date 
END ,TO_DATE('9999-12-31 00:00:00','yyyy-mm-dd HH24:MI:SS')) AS DATE) AS Effective_Date

Это устанавливает действительную, но очень будущую дату (продиктованную компанией, с которой я заключаю договор, как представление неверной даты в поле обязательной даты. Вы также можете использовать '1900-01-01 00:00:00' вместо '9999-12-31 00:00:00') в случаях, когда исходная дата null или меньше 1900-01-01 00:00:00. Это также позволяет избежать последующей обработки службами SSIS в поле даты.

2 голосов
/ 11 февраля 2010

Я понимаю, что у вас есть исправление, которое вы хотели, но другой метод решения проблем такого рода - это использование условного разделения. Вы можете найти и обработать все виды проблем с данными, в которых вы хотите удалить записи из основного потока и выполнить специальную обработку их с помощью условного разделения. Я нахожу это особенно удобным, когда я хочу иметь возможность сообщить продавцу о неверных записях, которые они нам отправили, чтобы они могли исправить свои данные.

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