2009-06-25 2 views
3

Я пытаюсь импортировать столбец дат из таблицы в Excel 2003 в SQL Server 2005 с использованием SSIS. Я в Великобритании, поэтому хочу, чтобы даты были отформатированы как dd/MM/yyyy.Проблема формата даты с использованием SSIS для Excel в SQL Server

К сожалению, столбец в электронной таблице содержит смесь дат, хранящихся в виде строк в формате dd/MM/yyyy (с форматированием Excel «General»), а также даты с использованием форматирования Excel «Дата» dd/MM/yyyy (с locale 'Английский (Великобритания)').

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

При просмотре таблицы все даты визуально отображаются правильно, т. Е. Dd/MM/yyyy.

Я пытаюсь импортировать значения в столбце varchar в таблице хранения в базе данных. Затем я запускаю хранимую процедуру, которая копирует эти значения в правильную таблицу, которая содержит столбец datetime.

Проблема заключается в том, что даты, которые хранятся в электронной таблице и используют форматирование даты, импортируются как MM/dd/yyyy в SQL Server, а даты, хранящиеся в виде строк, импортируются как dd/MM/yyyy. В строке подключения IMEX = 1.

Наличие мест с использованием обоих форматов в том же столбце VARCHAR, очевидно, вызывает проблемы, когда я пытаюсь поставить его в столбец даты и времени, следовательно,

SET DATEFORMAT MDY;  
SET DATEFORMAT DMY; 

не имеют применения.

Кто-нибудь знает, почему пакет SSIS импортирует, казалось бы, правильные даты в электронной таблице Excel в SQL Server как MM/dd/yyyy?

Есть ли способ заставить пакет SSIS импортировать даты как dd/MM/yyyy, которые будут работать с этой комбинацией дат как строк и ячеек с форматированием даты?

Любые другие идеи ?!

Большое спасибо,

Энтони

ответ

2

Я думаю, вы сами ответили на свой вопрос. Импорт отформатированных по дате ячеек рассматривается как даты, а другие - как строка. Возможно, вы настроили дату сервера SQL MM/dd/yyyy и, следовательно, преобразование.

Почему бы вам не попробовать добавить шаг преобразования данных в пакет SSIS и преобразовать каждое значение в столбце в один формат - дату или время. Тогда я уверен, что SQL-сервер будет обрабатывать все одинаково.

Радж

1

То, что работало для меня, чтобы добавить IMEX=1 в строке подключения Excel.

Так это будет выглядеть следующим образом:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Folder1\Book1.xls;Extended Properties="EXCEL 8.0;HDR=YES;IMEX=1"; 
Смежные вопросы