首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 求助Excel表导入到Ms SQL Server 的错误 [已结贴,结贴人:yuyu20001021]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 13:25:57 楼主
    提示:
    将数据类型 DBTYPE_DATE 转换为 datetime 时出错。
    该怎么解决?
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 13:27:421楼 得分:0
    convert(datetime,你出错的字段)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 13:28:002楼 得分:0
    数据格式是什么样的.是不是不是日期格式的数据.那会报错的.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 13:28:143楼 得分:5
    贴几个excel里的时间格式  来看看


    是不是有英文字母呀
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 13:32:204楼 得分:5
    SQL code
    select case isdate(c1) when 0 then '1990-01-01' else c1 end,c2 from openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\','select * from [test.DBF]')


    比如C1 为你出错的字段
    用 ISDATE 判断下
    把不能转换的数据 默认为 ‘1900-01-01’
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 13:37:105楼 得分:0
    SQL code
    select * into temp_install_table from OpenRowSet('microsoft.jet.oledb.4.0','Excel 5.0;HDR=yes;database=F:\install.xls;', 'select * from [install$]')


    Excel格式:2009-2-22
    改为:2002-022也不行

    数据库中是Datetime类型
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 13:39:216楼 得分:0
    SQL code select * into  temp_install_table  from 
    OpenRowSet('microsoft.jet.oledb.4.0','Excel 5.0;HDR=yes;database=F:\install.xls;',
      'select * from [install$]')

     

    Excel格式:2009-2-22
    改为:2002-02-22也不行 ,都设置为日期格式的

    数据库中是Datetime类型
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 13:40:007楼 得分:0
    你把这个结果集贴部分上来看看
    select * 
    from 
    OpenRowSet('microsoft.jet.oledb.4.0','Excel 5.0;HDR=yes;database=F:\install.xls;',
      'select * from [install$]')
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 13:47:518楼 得分:8
    SQL code
    select * into temp_install_table from OpenRowSet('microsoft.jet.oledb.4.0','Excel 5.0;HDR=yes;database=F:\install.xls;', 'select * from [install$]')
    别用* 一个字段一个字段写 在出差字段前 用 ISDATE 做判断

    引用 4 楼 kk19840210 的回复:
    SQL codeselect  case  isdate(c1)  when  0  then  '1990-01-01'  else  c1  end,c2   
      from  openrowset('MSDASQL','Driver=Microsoft  Visual  FoxPro  Driver;SourceType=DBF;SourceDB=c:\','select  *  from  [test.DBF]')


    比如C1 为你出错的字段 
    用 ISDATE 判断下 
    把不能转换的数据 默认为 ‘1900-01-01’
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ojuju10
    • 等级:
    发表于:2008-04-30 13:48:049楼 得分:8
    SQL code
    ------ 转换下 select id,...cast(createtime as datetime) into temp_install_table from OpenRowSet('microsoft.jet.oledb.4.0','Excel 5.0;HDR=yes;database=F:\install.xls;', 'select * from [install$]')
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ojuju10
    • 等级:
    发表于:2008-04-30 13:48:4910楼 得分:0

    你的时间字段的记录肯定有问题!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 13:49:3711楼 得分:4

    是他的字段那个记录里面有 不复合 DATETIME 类型的数据
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 13:57:4512楼 得分:0
    你先從EXCEL導入到一張空表,再從這張空表導入到你原先設計的表看看。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 13:59:0513楼 得分:5
    引用 12 楼 rockyvan 的回复:
    你先從EXCEL導入到一張空表,再從這張空表導入到你原先設計的表看看。

    導入到一張空表看看日期字段是什麽格式的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 14:02:0214楼 得分:5
    别转来转去了,SQL隐式转换已经报错 了,显式就不会错了呀


    估计摄取数据时就不对了

    select *   
    from   
    OpenRowSet('microsoft.jet.oledb.4.0','Excel 5.0;HDR=yes;database=F:\install.xls;',
      'select * from [install$]') 
    这个时候时间 字段内容  是否正确
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 14:23:4415楼 得分:0
    select *   
    from   
    OpenRowSet('microsoft.jet.oledb.4.0','Excel 5.0;HDR=yes;database=F:\install.xls;', 
      'select * from [install$]') 
    的结果:只贴了一列,有很多的
    NULL   200601001 16.0 中国工商银行 1899-12-30 00:00:00.000 河北省 沧州市
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 14:32:5716楼 得分:10
    测试
    在Excel中插入如下数据:f是日期型
    a b c d e f g
    NULL 200601001 16.00 中国工商银行 1899-12-30 00:00:00.000 河北省 沧州市
    ----
    SELECT  *  into #
    FROM  OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\aa.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]


    select * from #

    drop table #
    ----
    select * from   
    OpenRowSet('microsoft.jet.oledb.4.0','Excel 5.0;HDR=yes;database=c:\aa.xls;',
      'select * from [Sheet1$]')


    SELECT  *  into #
    FROM  OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\aa.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]


    select * from #

    drop table #

    /*
    a                        b                                        c                                                d                                            e                    f                                  g                      h
    ------------------- -------------------------------------- ----------------------------------------------------- -------------------------------------------------------- ------------------------------------- ---------------------------- ------------------------------------------
    NULL                200601001.0                                          16.0                                                  中国工商银行                                1899-12-30 00:00:00.000                        河北省                    沧州市

    (所影响的行数为 1 行)
    */
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 16:53:3417楼 得分:0
    非常感谢大家热情帮助。
    稍后给分 虽然不多!

    解决了 是数据太多了 没发现有几个是####的;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 18:14:4018楼 得分:0
    以后需再关注,现在先帮你顶一下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 22:04:0919楼 得分:0
    我也想知道,正在找這方面的資料~~~~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-01 19:33:4520楼 得分:0
    关注 接分
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved