国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

SQL Server導(dǎo)入excel數(shù)據(jù)之Bug!

瀏覽:140日期:2022-08-04 10:11:36
最近幫朋友把他整理的excel數(shù)據(jù)導(dǎo)入到Sql Server中,失敗,報(bào)錯(cuò)如下:作為源列4(“產(chǎn)品說明”)的數(shù)據(jù)對(duì)于所指定的緩沖區(qū)來講太大。 我的excel文件中有一列叫“產(chǎn)品說明”,就是一些文字。Sql server處理導(dǎo)excel數(shù)據(jù)流程是這樣的,它會(huì)先創(chuàng)建目標(biāo)表,再把excel數(shù)據(jù)寫入緩沖區(qū),然后再把緩沖區(qū)數(shù)據(jù)寫入目標(biāo)表。問題就在創(chuàng)建目標(biāo)表和寫入緩沖區(qū),sql server會(huì)根據(jù)現(xiàn)在的excel中的數(shù)據(jù)格式來寫入緩沖區(qū)和創(chuàng)建目標(biāo)表。比如excel中有一列為編號(hào),里面是數(shù)字,sqlserver就會(huì)在目標(biāo)表里建一列叫“編號(hào)”,為float類型. 而對(duì)于我的excel文件中的'產(chǎn)品說明'這一列,是文字,那sql server如何建立目標(biāo)列或緩沖區(qū)呢?它怎么知道該把目標(biāo)建立成varchar還是text呢?經(jīng)過測(cè)試,發(fā)現(xiàn)sql server是這樣做的,他會(huì)取excel文件中的前8行(2的三次方),然后算這8行里“產(chǎn)品說明”的最大長(zhǎng)度,如果這8行里最長(zhǎng)的 > 255,則目標(biāo)列和緩沖區(qū)就會(huì)建立成ntext類型,否則就建立成nvarchar類型。這樣,問題就來了!假設(shè)我的excel文件前8行“產(chǎn)品說明”中都 < 255,則目標(biāo)和緩沖區(qū)就被建立為varchar(255)類型了(這里說明一下,你可以修改目標(biāo)表的字段類型,但緩沖區(qū)長(zhǎng)度或類型是無法修改的)。而如果我的第10行里“產(chǎn)品說明”的長(zhǎng)度超過了255,則sql server往緩沖區(qū)里寫的時(shí)候,自然就發(fā)生了如上的錯(cuò)誤:數(shù)據(jù)對(duì)于指定的緩沖區(qū)來講太大。 這樣,我們導(dǎo)數(shù)據(jù)當(dāng)然就失敗了!這個(gè)也許不能算bug,因?yàn)橹皇菍?shí)現(xiàn)得不好(取某列前8行的最大長(zhǎng)度并不能真正代表所有行,我想microsoft的工程師為了簡(jiǎn)單或者提高性能才這樣做的);也許算是bug,因?yàn)椴恢榈挠脩魧?dǎo)數(shù)據(jù)失敗了。而且不知道為何而失敗的! 公理自在人心,讓大家或那些工程師們?nèi)ピu(píng)判吧!
標(biāo)簽: excel
主站蜘蛛池模板: 泗阳县| 瓦房店市| 瓮安县| 通江县| 东港市| 河津市| 陇西县| 景泰县| 泗洪县| 光泽县| 城市| 门头沟区| 昭苏县| 新晃| 澜沧| 阿勒泰市| 吴堡县| 建湖县| 师宗县| 抚州市| 双鸭山市| 容城县| 西乌珠穆沁旗| 定结县| 岱山县| 嫩江县| 阜南县| 兰西县| 安化县| 鱼台县| 嘉善县| 信宜市| 海晏县| 若羌县| 天水市| 老河口市| 布尔津县| 孟州市| 克拉玛依市| 贞丰县| 温州市|