Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Можно-ли добавь строку в Excel файл в SSIS пакете  [new]
stenford
Member

Откуда: урал
Сообщений: 2830
Есть пакет SSIS, который забирает данные из .xlsx файла и загружает их в базу. Однако одно из текстовых полей длиннее 255 символов, и что-бы правильно его загрузить требуется определить его как TEXT, и работает он только когда в файле длинная строка содержится в первых 8 записях, иначе пакет сваливается в ошибкой, я так понюл что в майкософт до-сих пор эта проблема не решена.
Вопрос в следующем - можно-ли программно в SSIS добавить строку-заглушку с длинным текстом в начало Ехel файлa, что-бы обойти эту проблему и заставить SSIS распознать поле как TEXT? Потом эта строка будет из базы удалена.
Т.е. требуется совершить следующие действия в SSIS:
1) Добавить в указанный ексел файл строку в начало файла
2) Сохранить файл
3) Прочитать файл и залить его в базу
4) Удалить строку-заглушку из базы
20 июн 13, 09:12    [14457548]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли добавь строку в Excel файл в SSIS пакете  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2994
stenford, не пробовали сначала в самом "Excel Source" указать тип и размер поля руками?
20 июн 13, 10:02    [14457808]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли добавь строку в Excel файл в SSIS пакете  [new]
stenford
Member

Откуда: урал
Сообщений: 2830
HandKot
stenford, не пробовали сначала в самом "Excel Source" указать тип и размер поля руками?

не, это не помогает, это известная проблема, я ее нагуглил, все что делали другие в этой ситуации - ставили длинную строку первой в файле, больше по-сути ничего сделать нельзя (ну можно еще подправить реестр и заставить таким образом ексел просмотреть около 2000 первых записей, но у нас записей в файле сотни тысяч)
Вот я и подумал, а что если программно записать туда строку-заглушку, и заставить таким образом ексель работать как надо.
20 июн 13, 10:25    [14457994]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли добавь строку в Excel файл в SSIS пакете  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3618
Есть альтернативные конекторы к экселю
20 июн 13, 11:37    [14458638]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли добавь строку в Excel файл в SSIS пакете  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2994
stenford
HandKot
stenford, не пробовали сначала в самом "Excel Source" указать тип и размер поля руками?

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


попробуйте на этапе проектирования дать файл со структурой нужной Вам. Он создаст нормальный компонент, с теми типами полей, какие надо
только не забудьте потом выставить у источника св-во ValidateExternalMetadata в false

ЗЫЖ создавать строку программно и еще в SSIS просто ужас


Ivan Durak
Есть альтернативные конекторы к экселю

скиньте ссылочки. интересно на них посмотреть
20 июн 13, 13:51    [14459869]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли добавь строку в Excel файл в SSIS пакете  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2994
stenford, да, забыл сказать, вроде как формат столбца влияет на определение источника. Формат "Общий" - зло
20 июн 13, 14:28    [14460184]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли добавь строку в Excel файл в SSIS пакете  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3618
HandKot
stenford
пропущено...

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


попробуйте на этапе проектирования дать файл со структурой нужной Вам. Он создаст нормальный компонент, с теми типами полей, какие надо
только не забудьте потом выставить у источника св-во ValidateExternalMetadata в false

ЗЫЖ создавать строку программно и еще в SSIS просто ужас


Ivan Durak
Есть альтернативные конекторы к экселю

скиньте ссылочки. интересно на них посмотреть

не совсем альтернативный... просто JET 12
20 июн 13, 15:59    [14460897]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли добавь строку в Excel файл в SSIS пакете  [new]
stenford
Member

Откуда: урал
Сообщений: 2830
HandKot
попробуйте на этапе проектирования дать файл со структурой нужной Вам. Он создаст нормальный компонент, с теми типами полей, какие надо
только не забудьте потом выставить у источника св-во ValidateExternalMetadata в false

ЗЫЖ создавать строку программно и еще в SSIS просто ужас


да, именно так пакет и скомпилирован, ValidateExternalMetadata установлен в false, но пакет валится в рантайме (но работает как надо если вставить запись-заглушку). Я-ж говорю, что известная проблема, но майкрософт ее не фиксит по непонятным причинам, вот например: http://www.mssqltips.com/sqlservertip/2770/importing-data-from-excel-using-ssis--part-1/
21 июн 13, 03:39    [14463100]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли добавь строку в Excel файл в SSIS пакете  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2994
stenford
Однако одно из текстовых полей длиннее 255 символов

а насколько это текстовое поле длинное?
21 июн 13, 09:23    [14463482]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли добавь строку в Excel файл в SSIS пакете  [new]
stenford
Member

Откуда: урал
Сообщений: 2830
HandKot
а насколько это текстовое поле длинное?

длина не ограничена, но обычно несколько сотен символов
21 июн 13, 09:51    [14463622]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли добавь строку в Excel файл в SSIS пакете  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2994
stenford, ну если несколько сотен символов, то при его типе Unicode text stream [DT_NTEXT] выставьте у его определения OUTPUT тип Unicode string [DT_WSTR] с указанием длины (по крайней мере, у меня работает так)
21 июн 13, 10:22    [14463777]     Ответить | Цитировать Сообщить модератору
 Re: Можно-ли добавь строку в Excel файл в SSIS пакете  [new]
stenford
Member

Откуда: урал
Сообщений: 2830
HandKot
stenford, ну если несколько сотен символов, то при его типе Unicode text stream [DT_NTEXT] выставьте у его определения OUTPUT тип Unicode string [DT_WSTR] с указанием длины (по крайней мере, у меня работает так)


нет, так не пойдет ) клиент специально выбил требование про varchar(max), до этого было действительно обычной строкой.
В обшем после обширного гугления вывод такой, что сроку добавить нельзя, т.к. что-бы ее вставить файл все равно надо сначала прочитать, а именно это и не получается, варианты - клиент должен либо сменить формат на .csv, либо забивать первую строку пробелами до достижения длины в > 300 символов, по-другому никак. Пусть выбирают
21 июн 13, 10:29    [14463830]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить