Мастер импорта / экспорта данных SQL Server и DTExec для дат Excel

Я пытаюсь создать электронную таблицу Excel, используя последнюю версию SSDT внутри Visual Studio 2015 в качестве проекта / пакета SQL Server 2014. Сначала я использовал мастер импорта / экспорта данных SQL Server для запуска и создания пакета DTS, который выдает простой запрос для извлечения данных из таблицы базы данных SQL Server, которая включает столбец DATETIME, и экспортирует его в Excel, сохраняя столбец DATETIME как DATE. в Excel.

При правильном запуске пакета DTS во время работы мастера создается файл Excel со значением столбца как ДАТА. Но когда я повторно запускаю пакет DTS, который мастер сохранил в файловой системе с помощью Visual Studio 2015 (с использованием 32-разрядного режима) или ЛЮБОЙ 32-разрядной версии утилиты DTExec, файл Excel всегда создается со значением столбца как ТЕКСТ. Лист Excel создается с использованием типа DateTime, а внутренний тип SSIS - DT_DBTIMESTAMP. Я использую 32-разрядный драйвер Microsoft.ACE.OLEDB.12.0, поскольку на моей рабочей станции разработчика установлен 32-разрядный Office 2016 (хотя, скорее всего, на рабочем сервере будет использоваться 64-разрядная версия).

Есть ли какие-либо мысли о том, почему разница возникает при запуске с помощью мастера по сравнению с запуском в Visual Studio или с помощью DTExec? Это сводит меня с ума!

Или у кого-нибудь есть другие подходы к тому, чтобы этот столбец был ДАТА в Excel?

Спасибо!

Брайан


person Bryan Ambrogiano    schedule 20.12.2016    source источник


Ответы (1)


Экспорт date записей в Excel через SSIS всегда будет обрабатываться как TEXT, если у вас уже нет фиктивных записей в вашем листе Excel, а затем импортировать в этот Excel сразу после фиктивных строк. Предположим, у вас есть фиктивные строки, установленные в формате DATE

person LONG    schedule 20.12.2016
comment
Спасибо за комментарий. Создает ли мастер эти фиктивные записи, которых нет в создаваемом им пакете DTS? Вот как это работает, а запуск созданного пакета DTS - нет? Если да, то почему я не вижу фиктивных записей в выходном файле? - person Bryan Ambrogiano; 20.12.2016
comment
это, вероятно, выполняется внутри при использовании пакета DTS через sql-сервер, не уверен, что это внутренняя логика, которую он использует для обработки этих записей, но вам нужно создать фиктивные строки с определенным типом данных впереди, прежде чем вам понадобится вывод как те же данные введите SSIS. - person LONG; 20.12.2016
comment
Можете ли вы указать мне на какие-либо образцы в Интернете? Я предполагаю, что файл Excel должен быть создан заранее с фиктивной строкой, но мастер создает файл. Хотя я не знаю как. В пакете DTS есть инструкция Prepare SQL, которая выдает запрос CREATE Table 'Sheet1' для создания листа в электронной таблице Excel. Этот оператор не работает, если файл с этим листом уже существует. Поэтому я не знаю, как будут создаваться фиктивные записи заранее. А как бы вы удалили фиктивные записи? - person Bryan Ambrogiano; 20.12.2016
comment
Для пустых рядов вам придется вручную поставить вперед. Я не уверен, есть ли такой документ. Но вот что вы можете сделать: открыть Excel; переходит на лист1; впишите 01.01.1990 в первую ячейку столбца A; затем выделите весь столбец A, измените тип на DATE; после этого с помощью задачи потока данных импортировать записи DATE после строки №1 в столбце A; любая ДАТА, которую вы вставляете в лист1 после первой ячейки, будет иметь формат ДАТА; и лучший способ справиться с фиктивными строками - удалить их вручную. - person LONG; 20.12.2016
comment
Я реализовал предложенное вами решение, и оно работает, как ожидалось, несмотря на то, что мне нужно создать фиктивную строку форматирования. Когда я реализовал это, я понял, что сделал это много лет назад, чтобы решить ту же проблему. Думаю, время не решает все! Удаление фиктивных строк на самом деле не работает для меня, так как мне нужно будет установить библиотеки взаимодействия Excel на нашем производственном сервере, поэтому я просто спрятал строку. Я пока пометил ваш ответ как ответ. Хотелось бы найти способ сделать это без фиктивной строки форматирования. - person Bryan Ambrogiano; 21.12.2016
comment
Очень признателен за ваше предложение скрыть фиктивные строки xD, тем не менее, я ищу лучший вариант для достижения той же цели и в ssis. И тебе спасибо - person LONG; 21.12.2016