Переполнение потока данных служб SSIS по датам

У меня есть источник данных FoxPro, а местом назначения является SQL Server 2008.

На стороне FoxPro у меня есть столбец с типом данных Date. Это ширина 8, минимальное значение — 0001-01-01, а максимальное — 9999-12-31. На стороне SQL Server у меня есть файл datetime. Также ширина 8, минимальное значение 1753-01-01 и максимальное 9999-12-31.

В моей задаче потока данных SSIS у меня есть компонент источника OLE DB, который считывается из таблицы FoxPro. Столбцы отображаются как DT_DBDate как во внешних, так и в выходных столбцах. Назначение OLE DB для таблицы SQL Server берет эти столбцы и передает их в DT_DBTIMESTAMP. Я уверен, что DT_DBTIMESTAMP может адекватно обрабатывать эти диапазоны дат, и достаточно уверен в DT_DBDATE (но мне трудно найти его в документации MS).

Проблема

Когда я выполняю задачу, у меня возникают проблемы с ее сбоем и жалобой на «Недопустимый формат даты», а затем на «Сбой преобразования, поскольку значение данных переполняет определенный тип», когда оно встречает значения примерно с начала 1900-х годов до значений более 2050. Я не совсем уверен, где я ошибся.

Дополнительный вопрос

Как я могу справиться с переполнением в моей задаче потока данных?


person moribvndvs    schedule 02.12.2010    source источник


Ответы (2)


вы можете выполнить простой запрос VFP для поиска записей, выходящих за пределы диапазона, например, запрос VFP

select * from yourtable
   where YourDate < date( 1753, 1, 1 )
      or YourDate > date( 9999, 12, 31 )

посмотрите на эти записи на наличие проблем... Кроме того, посмотрите на другие столбцы, которые могут вызывать проблемы с границами

person DRapp    schedule 02.12.2010
comment
Да, я думаю, что я смотрел на это неправильно. Более уместно обрабатывать в соответствии с бизнес-требованиями, используя запросы, чем что-либо еще. - person moribvndvs; 22.12.2010
comment
+1. Это решило для меня импорт из MS Access. В Access синтаксис select * from yourtable where YourDate < #01-01-1753# OR YourDate > #01-01-9999# - person Matt Browne; 06.06.2014

Я думаю, вам нужно решить, что вы хотите делать с вашими данными

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

Или, если вы хотите исправить неправильные данные, вам нужно будет проверить и преобразовать их.

Если вы готовы потратить немного денег, рассмотрите возможность использования Advanced ETL Processor.

Он работает с текстом, XML, Excel, Access, DBF, Foxpro, ODBC, OLE DB, MS Sql Server, Oracle, MySql, PostgreSQL, Firebird, Interbase, SQLite, POP3, SMTP, файловой системой, FTP, SSL и Unicode.

person ETL Man    schedule 15.12.2010