excel导入时报错

czphs 2010-04-22 02:52:00
使用语句为
insert into cdma3 select * from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 8.0;DATABASE=d:平均等效用户数.xls',sheet1$)

结果
服务器: 消息 8114,级别 16,状态 5,行 1
将数据类型 nvarchar 转换为 float 时出错。

excel中数据,格式改文本或数值都不行
名称 数值
C_BSC1/小区号:站名=黄堡,小区号=998/扇区号:扇区-2/载频号:载频-6 1.062
C_BSC1/小区号:站名=黄堡,小区号=998/扇区号:扇区-1/载频号:载频-6 0.002
。。。。

sql表结构 varchar 50,float 8
...全文
139 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
csmark 2010-04-22
  • 打赏
  • 举报
回复
最好全部作为字符处理
永生天地 2010-04-22
  • 打赏
  • 举报
回复
我刚导过几个excel,在excel里面每个列的设置必须是一样,否则会采用开始数据的格式,后面的就有问题了
hzvcan 2010-04-22
  • 打赏
  • 举报
回复
还有一种方法,先把excel导入access,在从access导入数据库,试试看
hzvcan 2010-04-22
  • 打赏
  • 举报
回复
1.你把excel里的列类型改成文本后要保证每个单元格上面有一个小的绿点。如果没有小绿点是不行的。
2.数据库表的类型都改成varchar
SQL77 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 czphs 的回复:]
回1楼
刚才忘记关excel了
结果 a列和b列反了。
1.062 C_BSC1/小区号:站名=黄堡,小区号=998/扇区号:扇区-2/载频号:载频-6
0.002 C_BSC1/小区号:站名=黄堡,小区号=998/扇区号:扇区-1/载频号:载频-6
[/Quote]
INSERT cdma3 select F2,F1 from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 8.0;DATABASE=d:平均等效用户数.xls',sheet1$)

czphs 2010-04-22
  • 打赏
  • 举报
回复
回1楼
刚才忘记关excel了
结果 a列和b列反了。
1.062 C_BSC1/小区号:站名=黄堡,小区号=998/扇区号:扇区-2/载频号:载频-6
0.002 C_BSC1/小区号:站名=黄堡,小区号=998/扇区号:扇区-1/载频号:载频-6
SQL77 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 czphs 的回复:]
回1楼
服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 'MICROSOFT.JET.OLEDB.4.0' 报错。提供程序未给出有关错误的任何信息。
OLE DB 错误跟踪[OLE/DB Provider 'MICROSOFT.JET.OLEDB.4.0' IDBInitialize::Initialize returned 0x80004005: 提供程序未……
[/Quote]
你先查询一下看一下结果,然后你就可以确定了,晕
czphs 2010-04-22
  • 打赏
  • 举报
回复
回1楼
服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 'MICROSOFT.JET.OLEDB.4.0' 报错。提供程序未给出有关错误的任何信息。
OLE DB 错误跟踪[OLE/DB Provider 'MICROSOFT.JET.OLEDB.4.0' IDBInitialize::Initialize returned 0x80004005: 提供程序未给出有关错误的任何信息。]。

我的导入语句应该没有问题,我用简单的
名称 数值
a 1
b 2
测试过。
cdma3的列: 名称 varchar 50,数值float 8
喜-喜 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 htl258 的回复:]
SQL code
这个问题的原因是由于倒入过程中Excel中数据以数字开头如(12345678901)的字段认为是数字类型,以字母开头如(mob12345678901)认为是字符型的。由于12345678901太大,导致SQL Server导入时数据出错,如果小点就没事。解决的办法可以考虑Delphi中的Tools->Database Desktop中转一下。先导入到Paradox ……
[/Quote]

学习先...
喜-喜 2010-04-22
  • 打赏
  • 举报
回复
将数据类型 nvarchar 转换为 float 时出错

把数据库中的表字段 col float 改为 col varchar()试试
--小F-- 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 htl258 的回复:]
SQL code
这个问题的原因是由于倒入过程中Excel中数据以数字开头如(12345678901)的字段认为是数字类型,以字母开头如(mob12345678901)认为是字符型的。由于12345678901太大,导致SQL Server导入时数据出错,如果小点就没事。解决的办法可以考虑Delphi中的Tools->Database Desktop中转一下。先导入到Paradox ……
[/Quote]

学习
htl258_Tony 2010-04-22
  • 打赏
  • 举报
回复
这个问题的原因是由于倒入过程中Excel中数据以数字开头如(12345678901)的字段认为是数字类型,以字母开头如(mob12345678901)认为是字符型的。由于12345678901太大,导致SQL   Server导入时数据出错,如果小点就没事。解决的办法可以考虑Delphi中的Tools->Database   Desktop中转一下。先导入到Paradox   ,在导入SQL   Server。用Access解决不了问题。另外就是用:“mob12345678901”这种方式。
http://topic.csdn.net/t/20050706/17/4127199.html
SQL77 2010-04-22
  • 打赏
  • 举报
回复
select * from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 8.0;DATABASE=d:平均等效用户数.xls',sheet1$)


你先查询一下是什么个情况

cdma3

你这个表的列呢,是啥子情况

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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