#ssis
#ssis
Вопрос:
Я создал пакет для извлечения данных из двух таблиц SQL Server и с помощью объединения слиянием объединил эти данные, а затем сохранил результат в пункте назначения Excel.
В первый раз все работает нормально. Во второй раз он сохраняет повторяющиеся данные в файле Excel.
Как мне перезаписать строки файла Excel?
Комментарии:
1. Вы хотите всегда создавать новый файл или: вставлять новые строки, удалять несуществующие строки и обновлять существующие строки в пункте назначения Excel?
Ответ №1:
Да, возможно!
Вот решение:
Сначала перейдите к месту назначения Excel, нажмите кнопку «Создать» рядом с названием листа Excel, скопируйте запрос DML внутрь. Затем поместите задачу Execute SQL в свой поток управления и подключите ее к вашему потоку данных, который содержит назначение Excel. Установите тип подключения в Excel, установите соединение с менеджером соединений Excel вашего пункта назначения Excel, перейдите к инструкции SQL и введите :
Drop TABLE `put the name of the sheet in the excel query you just copied`
Go
наконец, вставьте запрос после него.
Это все, что вам нужно сделать, чтобы решить проблему.
Вы можете обратиться к этой ссылке для получения полной информации:http://dwhanalytics.wordpress.com/2011/04/07/ssis-dynamically-generate-excel-tablesheet /
Комментарии:
1. Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы только для ссылок могут стать недействительными, если связанная страница изменится.
2. @GergoErdosi, ответ изменен соответствующим образом.
3. @GergoErdosi, я ответил на вопрос, и это точно работает. Однако вместо вознаграждения я потерял очки! Это несправедливо, не так ли? 🙂
4. @Sahand, неплохо, хотя мне пришлось использовать синтаксис типа DROP TABLE [mySheet $]. 1
5. Это работает нормально, если файл действительно существует, но что касается первого раза? Я получил исключение «Таблица ‘ИМЯ МОЕЙ ТАБЛИЦЫ’ не существует».
Ответ №2:
Да, возможно!
Используя SSIS, мы можем решить эту проблему:
прежде всего, создайте файл формата Excel (формат структуры с использованием менеджера соединений Excel) в одном месте в качестве файла шаблона. Затем создайте копию этого файла Excel с помощью ЗАДАЧИ ФАЙЛОВОЙ СИСТЕМЫ в другом месте и убедитесь, что установлено OverwriteDestination=True. Наконец, используя задачу потока данных, вставьте данные в новый скопированный файл. всякий раз, когда мы хотим вставить данные, он создаст копию файла шаблона Excel, а затем загрузит данные.
Комментарии:
1. Отличное предложение — Нестандартное мышление! Спасибо, манодж.
2. @manoj, я создал подключение к OLE DB и диспетчер подключений Excel для записи данных в файл Excel. Затем я создал задачу файловой системы для создания копии этого файла Excel и установил-Overwrite = True. Теперь, если я запускаю задачу потока данных, она продолжает добавлять данные в исходный файл Excel, а задача файловой системы копирует этот файл в новый файл в отдельном расположении.
Ответ №3:
К сожалению, диспетчер соединений Excel не имеет настройки, позволяющей перезаписывать данные. Вам нужно настроить некоторые операции с файлами, используя задачу файловой системы в потоке управления.
Существует несколько возможностей, вот одна из них. Вы можете создать файл шаблона (который содержит только лист с заголовком), и перед преобразованием потока данных задача файловой системы копирует его поверх ранее экспортированного файла.
Ответ №4:
Для Excel он добавит данные. Для перезаписи данных такой опции не существует.
Вы должны удалить и воссоздать файл с помощью задачи файловой системы.
Ответ №5:
Использование CSV-файла с помощью диспетчера подключений к плоским файлам послужит вашей цели перезаписи.
Ответ №6:
Лучшим решением для меня было использование задач файловой системы для удаления и воссоздания файлов Excel из шаблона.
То, что я пытался сделать, это отправить каждому сотруднику отчет с вложением Excel в том же формате, но с разными данными. В контейнере foreach для каждого сотрудника я получаю необходимые данные, создаю файл Excel и отправляю электронное письмо с прикрепленным файлом Excel.
Я сначала:
- Создайте шаблон Excel (вручную)
- Создайте исходный файл Excel для использования (вручную)
Затем в контейнере foreach:
- Удалить исходный файл (задача файловой системы SSIS)
- Скопируйте шаблон как исходный файл (задача файловой системы SSIS)
- Получить данные с SQL Server и записать их в исходный файл (задача потока данных SSIS)
- Отправьте почту (SSIS -> Хранимая процедура SQL)