将Word表格数据导入SQL SERVER数据库方法及问题解决.doc

时间:2024-02-29 21:53:15

Word表格数据导入数据库方法及问题解决

1.       问题背景

1.1.       工作中可能遇到如下问题,外部提供的资源如下的Word表格,要求将数据根据列区分字段导入Sql Server,如下表:

 

2291300020110915000002

我相信

 

2291300020110915000003

就这样好了

 

2291300020110915000006

I DO

 

2291300020110915000005

如果这就是爱情

 

2291300020110915000007

快活

2291300020110915000008

办不到

2291300020110915000009

High

 

2291300020110915000010

我们都辜负了爱

 

2291300020110915000011

2.       问题分析

2.1.       Sql Server并未提供相关的Provider供我们使用,但是确提供了诸如\'MICROSOFT.JET.OLEDB.4.0\'Provider,而且从Word文档中无法直接区分出字段,因此,虽然不能直接对Word进行导入,我们或许可以将Word表格Copy*.xls或者*.csv等格式的文件中,然后进行数据导入。

3.       问题解决

3.1.       尝试将Word表格Copy.xls中,可是问题出现了,见下图:

11

由于铃音编号一列是如“2291300020110915000002”长段数字字符串,Copy.xls文件中,Excel默认将该列格式设置为数字格式,因此该列数据全部显示为科学计数法形式,当然导入Sql Server之后也是这样。

3.2.       考虑到可以改变Excel单元格格式,因此尝试将铃音编号一列格式改为文本或邮编格式,但由于该列数据已经转化为科学计数法的形式,数据已经失去了精度,手动改变格式后的数据如下:

2

3.3.       以上尝试的两种方法都不行,考虑其原因,是由于当Copy完成后铃音编号列的数据已经改变,因此可以通过如下的方法,在数据Copy的时候将Excel该列的格式设置为文本:

首先,将目标excel的将存放铃音编码一列数据格式改为文本,见下图:

3

然后,将Word表格Copy到该Excel中,并选择“匹配目标格式”,见下图:

4

3.4.       将数据成功CopyExcel中,接下来只需要简单的SQL语句就可以实现将数据导入数据库了,当然由于word表格不规范导致部分列存在为“NULL”的情况,直接删除就行了,脚本代码如下:

insert into Pop201109 select * from

 

OPENROWSET(\'MICROSOFT.JET.OLEDB.4.0\'

 

,\'Excel 5.0;HDR=NO;DATABASE=D:\temp\安徽联通-华友世纪-推广歌单.xls\',Sheet1$)

 

DELETE FROM Pop201109 WHERE RingCode IS NULL