转自个人原创 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), )