实例目的:
(1)是把c盘根目录下的Excel文件test表导入到sql2000中,导入后,数据库表名为dy01,再尝试把dy01表内容导出到C盘的Excel表testout中
(2)导入导出都分为目标文件存在和不存在两种方式
Test.xls路径:C:\test。内容如下:
(一)excel导入sql
1、如果导入数据并生成表
select * into dy01 from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
导入后的dy01表记录如下:
不过位的位置换了,原来sfzhm位于第2列,现在位于第1列了
2、如果接受数据导入的表已经存在
insert into dy01 select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
跟上表的情况差不多,仍然是sfzhm成了第一列,姓名成了第二列。
(二)sql数据库表导出到excel表
1、 如果Excel文件已经存在,而且已经按照要接收的数据创建好表头
在C盘根目录建立testout.xls,字段名分别为:xm,sfzhm,,数据库表dy01内容如下:
insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\testout.xls',sheet1$) select * from dy01
导出后之的testout记录截图如下:
2、如果Excel文件不存在,也可以用BCP来导成类Excel的文件,注意大小写
EXEC master..xp_cmdshell 'bcp twt001.dbo.dy01 out "c:\testout.xls" /c -S"X6X8-EERR" /U"sa" -P"sa"'
但这样导出的身份证号码是以科学计数法显示
用下语句可以解决
EXEC master..xp_cmdshell 'bcp "select *, ''x'' + sfzhm from twt001.dbo.dy01 " queryout "c:\testout.xls" -c -q -S"X6X8-EERR" -U"sa" -P"sa"'
自己对第三列进行处理:把前面的x删掉就可以了