sql >> Databáze >  >> RDS >> Sqlserver

Při importu ze souboru aplikace Excel byl text zkrácen nebo jeden nebo více znaků v cílové kódové stránce neodpovídalo

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:

  1. 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'.
  2. 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 pod HKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\Microsoft\Jet\4.0\Engines\Excel )klíč registru.

Více informací naleznete na těchto dvou odkazech:

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ů.



  1. Jak exportovat a importovat databázi mysql s jejími daty pomocí skriptu php?

  2. Oprávnění MySQL DROP DATABASE?

  3. Vylepšení Service Broker v SQL Server 2016

  4. MySQL, spočítejte počet vyplněných polí v tabulce