Sql Server数据库导入Excel、txt数据详解,新人必看

转自个人原创 https://blog.csdn.net/qq_15170495/article/details/104591606


数据库的要想导入数据,列的映射很是关键,只有列名匹配好,系统才知道如何去导入。
我们导入数据通常用到Sql Server的DTS工具,如图。


首先我们已经建好了一个名为kcdb的数据库,并且创建了三个空表,分别是作者表,期刊表,投稿表。导入数据只需要右击数据库,在“任务”里找到“导入数据”,通常会从Excel表格或者是平面文件txt中导入。

首先,以导入Microsoft Excel为例(包括WPS表格),点击导入数据,在向导中选择好本地文件,类型推荐Microsoft Excel 97-2003。


选择导入位置,本例中导入数据库,所以要登录服务器。服务器选默认登陆的就好,再选择要导入数据的表所在的数据库。

这里有两个选项,第一种是全部导入,也是通常选择的方法。第二种是先select进行筛选,再导入“瘦身”后的结果。当不要求全部导入、且表格较大时,推荐此类选项。


接下来是关键,我们要选定需要导入数据的表格,同时点击这两个表,分别点击编辑映射。如图。本例中的Excel带有两个工作表“作者表”“投稿表”,如图。(注意,不是在数据库中新建两个表,而是把导入数据到已知表,否则就选择下面两个选项)


两个表的映射关系如下,我们可以选择对应关系。同时可以看到,一个Excel可以赋值给多个数据库表格,特别地,Excel自带的工作表可以使条理更加清晰。

这里注意类型最好相同,不然导入过程中可能会损失数据,如图是类型不对应的情况。如果想继续执行,可将下方两个“失败”调成“忽略”。


然后是导入txt文件,也就是平面文件,在软件中也可能叫做Flat File Source。由于txt文件不像表格那样有统一的分隔方式,所以自带的内容分隔符各式各样。如图,列分隔符是逗号的时候,会发现分的很乱,经过观察发现##是分隔符,于是将列分隔符改为##。


改为##后,刷新一下可以看到,列名区分的很清楚。


最后导入成功,这就是全过程分解,希望对刚学数据库Sql Server的新人有所帮助。

附:本例中创建表格的sql代码

use kcdb
go

--作者表(ZZB)作者号(zzh) 作者名(zzm) 
create table ZZB
(
zzh char(4) primary key,
zzm nvarchar(5) unique,
)
go

-- 期刊表(QKB)期刊号(qkh)期刊名(qkm)类别(lb)版面费(bmf) 
create table QKB
(
qkh char(4) primary key,
qkm varchar(20) not null,
lb char(2) check(lb='' or lb=''),
bmf int,
)
go

--投稿表(TGB)作者号(zzh)期刊号(qkh)
--投稿日期(tgrq) 文章名称(wzmc)审稿结果(sgjg)
create table TGB
(
zzh char(4) not null,
qkh char(4) not null,
tgrq smalldatetime not null default(getdate()),
wzmc char(50),
sgjg nchar(6) check(sgjg='通过' or sgjg='未通过') default('未通过'),
primary key(zzh,qkh,tgrq),
foreign key (zzh) references ZZB(zzh),
foreign key (qkh) references QKB(qkh), 
)
原文地址:https://www.cnblogs.com/ccwx/p/12889024.html