SQL Serverisse Excelist importimine annab vea

Avastasin täna SQL Serverisse Excelist andmeid üle tõstes ühe pisema vea kuigi vajutasin enda arust Next nuppu üpris tublisti. Nimelt hakkas silma veateade “There was an error with output column “X” (X) on output “Excel Source Output” (9). The column status returned was: “Text was truncated or one or more characters had no match in the target code page“. Lähemal uurimisel selgus, et tegemist on ligi 97 (sic!) aastast pärit probleemiga.Nimelt on ODBC tüürel küll tubli ja viks ning üritab aru saada mis tüüpi väli sul Excelis on täpselt ning sellega tekib tal väike näpukas. Nimelt vaatab ta läbi vaid esimesed kaheksa rida ja teeb sellepõhjal välja tüübi hinnangu. Probleem aga tekib siis kui kusagil hiljem (näiteks rida 27) tuleb sul mingi väli mis on pikem ning sellepeale kukub kogu asi kokku.

Kui sa kasutad vanemat SQL Serverit siis tasuks kõigepealt vaadata äkki on sul registris HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel selline kirje nimega TypeGuessRows mille väärtus võib olla 0 kuni 16. Selle sea ilusti 0 peale, kuna siis ei otsi ODBC draiver mitte läbi ei 8 ega 16 rida vaid tervenisti 16384. Uutematel versioonidel tuleks registrist lihtsalt otsida TypeGuessRows väärtust (seda võib sul olla vabalt 2 või rohkem, muudad siis vastavalt kõigil neil väärtused ära).

PS: Seda tehes arvesta jõudluse kaoga, eriti suurtemate dokumentide importimisel!

Kui sul aga nii hästi ei läinud, siis ilmselt on sul kõige lihtsam konvertida Exceli andmed Accessi peale või mõnda muuse formaati.