Excel 与Sql2000数据库之间以命令方式导入导出

来源:互联网 发布:丫丫网络娱乐公司 编辑:程序博客网 时间:2024/06/04 08:22

实例目的:

         (1)是把c盘根目录下的Excel文件test表导入到sql2000中,导入后,数据库表名为dy01,再尝试把dy01表内容导出到C盘的Exceltestout

         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删掉就可以了

0 0
原创粉丝点击