opendatasource 255字符限制问题

wgzaaa 2007-06-15 05:00:59
用opendatasource导入excel到数据库,发现只能导入255个汉字即510个字节,
字段用nvarchar(1000)接收,查询分析器结果放大到1000查询结果还是255个汉字,
请各位帮忙分析,急用,多谢了
...全文
678 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
wgzaaa 2007-06-15
  • 打赏
  • 举报
回复
应该打了,我连着其它两台机器上的个人版,我自己的也是个人版,家里是服务器版的
hellowork 2007-06-15
  • 打赏
  • 举报
回复
看看你单位的SQLSERVER打没打sp4补丁.
wgzaaa 2007-06-15
  • 打赏
  • 举报
回复
多谢多谢,辛苦了,我在家也通过了,可能是环境问题,我回单位再试试
hellowork 2007-06-15
  • 打赏
  • 举报
回复
set @str = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc'

select len(@str),datalength(@str)


/*结果1(opendatasource)
966 1932
*/

/*结果2(从EXEL复制)
966 1932
*/
hellowork 2007-06-15
  • 打赏
  • 举报
回复
declare @str nvarchar(4000)
SELECT top 1 @str = 产品类型
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="d:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
print @str
select len(@str),datalength(@str)
hellowork 2007-06-15
  • 打赏
  • 举报
回复
在我的机器上测试正常!
测试环境: Windows Server2003 SP1,SQLSERVER2000 SP4
EXECL文件:d:\test.xls,Sheet1表中只有一行.
(又不能一次全贴出了,只好拆开了,被CSDN折磨死了@!@)
wgzaaa 2007-06-15
  • 打赏
  • 举报
回复
确实为空,我将@str = 去了是有内容的;print 改为select 也是明显的空白
wgzaaa 2007-06-15
  • 打赏
  • 举报
回复
命令已成功完成。
没有其它任何内容,为空了''
hellowork 2007-06-15
  • 打赏
  • 举报
回复
但用opendatasource查长度一样,就是字符数实际只有255
--------------------------------------------------------------------------
也就是说查询的字符并没有被截断,只是在查询分析器中只能显示前255个字符?
再这样用print试试:
declare @str nvarchar(4000)
select top 1 @str = 产品类型 from opendatasource()....
print @str
看看打印出的字符串是否被截断,或把print的字符串复制,再
declare @str nvarchar(4000)
set @str = N'从print复制的字符串'
select len(@str)看看长度.
wgzaaa 2007-06-15
  • 打赏
  • 举报
回复
晕,上面那句话应该是这样的:
以上是用opendatasource查的,但只能看到255个汉字,插入库后也是255个
以下是导入到数据库后select查表
510 255
hellowork 2007-06-15
  • 打赏
  • 举报
回复
看起来象是opendatasource的问题了.
wgzaaa 2007-06-15
  • 打赏
  • 举报
回复
hellowork(一两清风) 按你的方法,查询长度一样,内容是真实的,但用opendatasource查长度一样,就是字符数实际只有255 如下:
智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型发动机,智能型
wgzaaa 2007-06-15
  • 打赏
  • 举报
回复
以上是用opendatasource查的,以下是导入到数据库的,用opendatasource 查询就只能看到255个汉字
510 255
hellowork 2007-06-15
  • 打赏
  • 举报
回复
把EXECL里面的产品类型复制一下,让后在查询分析器中:
declare @str nvarchar(4000)
set @str = N'从EXECL复制的字符串'
select len(@str)看看长度是否与select *,len(产品类型) from openrowset()获得的长度一致.
hellowork 2007-06-15
  • 打赏
  • 举报
回复
既然len(产品类型)长度已经超过了255,那就说明查询本身没有问题,而是查询分析器的问题了.
wgzaaa 2007-06-15
  • 打赏
  • 举报
回复
多谢,改成nvarchar(2000)试下不行,bill024(咖啡熊的没看明白
datalength(产品类型),len(产品类型)
726 363
hellowork 2007-06-15
  • 打赏
  • 举报
回复
使用len(B)或datalength(B)测试一下长度看看.
bill024 2007-06-15
  • 打赏
  • 举报
回复
try:
http://support.microsoft.com/kb/298418/zh-cn
wgzaaa 2007-06-15
  • 打赏
  • 举报
回复
维修台数 ---52 和 那堆n长 的是excel中的内容,
A B
1|维修台数|机器类型
2|52 |智能型发动机,智能型发动机,...
昵称被占用了 2007-06-15
  • 打赏
  • 举报
回复
你把nvarchar(1000)改成nvarchar(2000)试下

加载更多回复(5)

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧