Předpokládám, že se to pokoušíte importovat pomocí zdroje aplikace Excel v dialogovém okně SSIS?
Pokud ano, problém je pravděpodobně v tom, že SSIS při vytváření zdrojového kódu Excelu vzorkuje určitý počet řádků na začátku tabulky. Pokud si ve sloupci [ShortDescription] nevšimne ničeho příliš velkého, bude výchozí textový sloupec o délce 255 znaků.
Chcete-li tedy importovat data ze sloupce, který obsahuje řádky s velkým množstvím dat bez zkrácení, existují dvě možnosti:
- Musíte se ujistit, že sloupec [ShortDescription] alespoň v jednom ze vzorových řádků obsahuje hodnotu delší než 255 znaků. Jedním ze způsobů, jak toho dosáhnout, je použití funkce REPT(), např. =REPT('z', 4000), což vytvoří řetězec 4000 písmene 'z'.
- Musíte zvýšit počet řádků vzorkovaných ovladačem Jet Excel, abyste takový řádek zahrnuli. Počet vzorkovaných řádků můžete zvýšit zvýšením hodnoty TypeGuessRows pod
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
(pokud je váš systém x64, pak podHKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\Microsoft\Jet\4.0\Engines\Excel
)klíč registru.
Více informací naleznete na těchto dvou odkazech:
- http://waxtadpole.wordpress.com/2008/04 /28/hello-world/
- http://technet.microsoft.com/en-us/ library/ms141683.aspx
Pro další vysvětlení SSIS vytváří 3 objekty v zákulisí průvodce, objekt zdroje dat Excel, cílový objekt tabulky SQL a operátor toku dat mezi nimi. Zdrojový objekt Excel definuje zdrojová data a existuje nezávisle na ostatních dvou objektech. Když se tedy vytvoří, provede se vzorkování, které jsem popsal, a nastaví se velikost zdrojového sloupce. Takže ve chvíli, kdy se operátor toku dat spustí a pokusí se stáhnout data z Excelu a vložit je do vaší tabulky, už se dívá na zdroj dat, který je omezen na 255 znaků.