首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

导入有关问题

2012-01-30 
导入问题declare@svarchar(5000)set@sMicrosoft.Jet.OLEDB.4.0,DataSource e:\aa.xls UserIDAdminP

导入问题
declare   @s   varchar(5000)
set   @s   = ' ' 'Microsoft.Jet.OLEDB.4.0 ' ',
' 'Data   Source= "e:\aa.xls ";User   ID=Admin;Password=;Extended   properties=Excel   5.0 ' ' '
set   @s   =   'insert   into   HR.dbo.tb_youxiaouser   SELECT   *   FROM   OpenDataSource   ( '+@s+ ')...sheet1$ '
exec(@s)

执行提示如下:

服务器:   消息   241,级别   16,状态   1,行   1
从字符串转换为   datetime   时发生语法错误。
---------------------
tb_youxiaouser定义如下:
1WEIJIBIANMAchar7
0NASHUIRENJCvarchar50
0DIANHUAvarchar501
0YOUXIAORIQIdatetime8
0CHUANJIANRENvarchar50
0NASHUIRENJC_pyvarchar50
----------------------------------
aa.xls内容如下:
1234567王王王王11111112007-12-12sxl王王王王
1234567王王王王11111112007-12-12sxl王王王王
1234567王王王王11111112007-12-12sxl王王王王
1234567王王王王11111112007-12-12sxl王王王王
1234567王王王王11111112007-12-12sxl王王王王
1234567王王王王11111112007-12-12sxl王王王王
1234567王王王王11111112007-12-12sxl王王王王


[解决办法]
xls導的時候,時間欄位經常會出現這種情況,
建議先導臨時表,(即把YOUXIAORIQI設為varchar)
然後再將臨時表數據導入HR.dbo.tb_youxiaouser ,導的時候,轉換類型
[解决办法]
很明显类型转换会出错的呀

[解决办法]
declare @s varchar(5000)
set @s = ' ' 'Microsoft.Jet.OLEDB.4.0 ' ',
' 'Data Source= "e:\aa.xls ";User ID=Admin;Password=;Extended properties=Excel 5.0 ' ' '
set @s = 'insert into HR.dbo.tb_youxiaouser SELECT [f1], [f2], [f3], convert(dateime,[f4]), [f5], [f6] FROM OpenDataSource ( '+@s+ ')...sheet1$ '
exec(@s)
[解决办法]
CREATE TABLE tb_youxiaouser
(
WEIJIBIANMA VARCHAR(70),
NASHUIRENJC VARCHAR(50),
DIANHUA varchar(50),
YOUXIAORIQI datetime,
CHUANJIANREN varchar(50),
NASHUIRENJC_py varchar(50)
)
declare @s varchar(8000)
set @s = ' ' 'Microsoft.Jet.OLEDB.4.0 ' ',
' 'Data Source= "e:\TEST.xls ";User ID=Admin;Password=;Extended properties=Excel 5.0 ' ' '
set @s = 'insert into TEST.dbo.tb_youxiaouser SELECT * FROM OpenDataSource ( '+@s+ ')...sheet1$ '
SELECT @s
exec(@s)
测试已经通过,导入结果:
WEIJIBIANMA NASHUIRENJC DIANHUA YOUXIAORIQI CHUANJIANREN NASHUIRENJC_py
---------------------------------- -------------------------------------------------- -------------------------------------------------- ----------------------- -------------------------------------------------- --------------------------------------------------
1.23457e+006 王王王王 1.11111e+006 2007-12-12 00:00:00.000 sxl 王王王王
1.23457e+006 王王王王 1.11111e+006 2007-12-12 00:00:00.000 sxl 王王王王
1.23457e+006 王王王王 1.11111e+006 2007-12-12 00:00:00.000 sxl 王王王王


1.23457e+006 王王王王 1.11111e+006 2007-12-12 00:00:00.000 sxl 王王王王
1.23457e+006 王王王王 1.11111e+006 2007-12-12 00:00:00.000 sxl 王王王王
1.23457e+006 王王王王 1.11111e+006 2007-12-12 00:00:00.000 sxl 王王王王
可尝试将excel中的时间列转换为时间格式。再进行导入。

热点排行