excel导入sql中,混全类型怎么搞?

fa_ge 2010-12-15 02:28:15
Excel中有一列有这样的值

123456789
asfasdfas
n/a
...

把它们设为文本型也不行。

SELECT
*
FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="d:\更新文件\11.xls";User ID=Admin;Password=;Extended properties=''Excel 5.0;HDR=yes;IMEX=1''')...sheet1$

按理说加了imex=1;就全部设成了文本类型了。但导入到sql中到好,数值型的变科学计数,文本型的变null了。
大家是怎么解决的?
...全文
122 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
abuying 2010-12-15
  • 打赏
  • 举报
回复
其实最主要的还是前面几列,一定要确保是字符串.
导入时,才能优先识别为字符串型!
fa_ge 2010-12-15
  • 打赏
  • 举报
回复
算了,不想搞了。有可能是我excel有问题吧.
fa_ge 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wxf163 的回复:]
我的也没问题,难道是RPWT
[/Quote]

呵呵,我也这想。还真是奇怪呀。
王向飞 2010-12-15
  • 打赏
  • 举报
回复
我的也没问题,难道是RPWT
Rockets_NBA 2010-12-15
  • 打赏
  • 举报
回复
我又添加了一些数字数据,好像还是没有问题
fa_ge 2010-12-15
  • 打赏
  • 举报
回复
Rockets_NBA,wxf163

你们两位测试数据可能有问题,excel是根据这列的前八项来确定数据类型的。你们两人的测试数据我估计是
字符型多,数值类型数据少的原顾。
也正原为excel是这样来确定数据类型的,所以我找出八行是字符型的数据插入到excel第一行时,再导入sql中就没问题了。
fa_ge 2010-12-15
  • 打赏
  • 举报
回复
我的是2003
abuying 2010-12-15
  • 打赏
  • 举报
回复
请问LZ的office是什么版本的?2003还是2007?
还是金山office
王向飞 2010-12-15
  • 打赏
  • 举报
回复
Rockets_NBA 2010-12-15
  • 打赏
  • 举报
回复
SELECT
*
into ss
FROM OpenDataSource
('Microsoft.Jet.OLEDB.4.0',
'Data Source="G:\SQL\aa.xls";User ID=Admin;Password=;Extended properties=''Excel 5.0;HDR=yes;IMEX=1''')...sheet1$

select * from ss

aaa
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
123456789
asfasdfas
n/a
...
4240
4520
4200
1500
NULL

(9 行受影响)


试了,没问题
王向飞 2010-12-15
  • 打赏
  • 举报
回复

我这怪了。
fa_ge 2010-12-15
  • 打赏
  • 举报
回复
试了,还是不行。
王向飞 2010-12-15
  • 打赏
  • 举报
回复
单元格格式设置为常规,右对齐设置试试?
fa_ge 2010-12-15
  • 打赏
  • 举报
回复
楼上估计没明白我的意思.
王向飞 2010-12-15
  • 打赏
  • 举报
回复
不能够吧?有这个类型吗sql_variant?试试


--> 数据库版本:
--> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
--> 测试数据:[TB]
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[TB]')
AND type in (N'U'))
DROP TABLE [TB]
GO

---->建表
create table [TB]([ID] varchar(90))
insert [TB]
select '123456789' union all
select 'asfasdfas' union all
select 'n/a'
GO



--> 查询结果
SELECT * FROM [TB]
--> 删除表格
--DROP TABLE [TB]




fa_ge 2010-12-15
  • 打赏
  • 举报
回复
sf自己的

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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