这篇大致内容有从SQL脚本导入数据42w条,接着是SQL_Server(后面才知道是SQLServer)转MongoDB。最后在MongoDBGUI里做数据处理。包括数据备份。
数据文件是GBDBFossil.sql。
本地OS
- Win10 家庭版
(Linux系统的实例有机会再写)
软件:
-
Navicat Premium 12(SQL_Server数据库GUI工具)点击下载
-
Navicat 12 for MongoDB(Mongo数据库GUI工具)
链接:Navicat.for.MongoDB英文版 ,提取码:rqm1
环境:
- SQL_Server
- MongoDB
备份环境:
- 阿里云服务器(ECS)
- CentOS7系统
- MongoDB version 3.0.6
GBDBFossil.sql数据来源:
http://data.casearth.cn/sdo/detail/5c19a5680600cf2a3c557b53
元数据详细
基本信息 子课题编号 XDA19050101
产品编号 XDA19050101002
数据对象 化石产出记录数据库
数据标识 21.86109/casearth.5c19a5680600cf2a3c557b53
引用地址 樊隽轩.化石产出记录数据库.中国科学院南京地质古生物研究所[创建机构],2006-05-01.中国科学院南京地质古生物研究所[传播机构],2019-01-01.21.86109/casearth.5c19a5680600cf2a3c557b53;http://hdl.pid21.cn/21.86109/casearth.5c19a5680600cf2a3c557b53
数据类型 文本
简介 全球42万条化石产出记录数据,包括化石名称、地点、产出层位、数据来源等多学科信息
资源关键词 化石;产地;古生物;采集号
学科分类 1705041(古生物学)
产品分类 生物多样性
产品类型 关系型数据库
共享方式 公开共享
投影方式 WGS84
数据加工方法说明 文本
格式 int;nvarchar;datetime
范围说明 全球
时间范围 开始时间 1900-01-01
结束时间 2030-12-31
分辨率 空间分辨率 0.001°
时间分辨率
版权声明 GBDB
创建信息 创建机构 中国科学院南京地质古生物研究所
创建人员 樊隽轩
创建日期 2006-05-01
发布信息 发布机构 中国科学院南京地质古生物研究所
邮箱 fanjunxuan@gmail.com
电话 025-83282148
最新发布日期 2019-01-01
文件信息 总存储量 623.00MB
总文件数 1
总记录数 422948
数据库结构信息
!!【此系列并非教程且所用软件和环境的搭配并非固定】!!
数据导入
数据文件下载完之后,在Navicat里执行
[ERR] 1065 - Query was empty:无效的 SQL 语句,SQL 语句为空。
报无效sql语句错。那么我就检查sql语句格式。文件数据量大,下了个Notepad++。打开之后,发现建表语句使用方括号
CREATE TABLE [dbo].[T_Fossil](
[ID] [int] IDENTITY(1,1) NOT NULL,
[FossilName] [nvarchar](255) NULL,
[FossilGroup] [nvarchar](255) NULL,
[SectionName] [nvarchar](255) NULL,
[Collection] [nvarchar](255) NULL,
[Country] [nvarchar](255) NULL,
[Province] [nvarchar](255) NULL,
[County] [nvarchar](255) NULL,
[Village] [nvarchar](255) NULL,
[LongitudeDecimal] [decimal](11, 8) NULL,
[LatitudeDecimal] [decimal](11, 8) NULL,
[Formation] [nvarchar](255) NULL,
[Lithology] [nvarchar](255) NULL,
[Depth] [nvarchar](255) NULL,
[RefAuthorInfo] [nvarchar](255) NULL,
[RefPublicationYear] [nvarchar](4) NULL,
[RefTitle] [nvarchar](500) NULL,
[RefJournalOrBookTitle] [nvarchar](255) NULL,
[Enterer] [nvarchar](255) NULL,
[InputTime] [datetime] NULL
) ON [PRIMARY]
正常的应该是这样:'FossilName' nvarchar(255) NULL,
。所以可能不是使用的mysql数据库,接着又仔细浏览一遍数据格式信息。发现是他所使用的的是SqlServer数据库。接着在服务器上装SqlServer,安装教程:https://blog.csdn.net/qq_41935112/article/details/104498483。
接着就开始导入
看见显示信息还以为仅仅执行了4192条数据,刷新后,发现有422948条与总记录数422948一样。
数据导入完成。接着把SQL_Server转MongoDB。当然也可以在SQL里做数据处理,但为了之后方便些,所以是先转再处理。
数据转换
SQL_Server ——> Json
通过“导出向导”
对着表名右击——>“导出向导”
——>“JSON文件(*.json)"——>“下一步”
——>选表"T_Fossil"——>“下一步”
——>选"全部字段"——>“下一步”
——>选导出格式,一般不改——>“下一步”
——>“开始”
最后等待就行
Json——>MongoDB
过程跟上面导出相似,重要的就是,选标记行必须是“RECORDS”。
数据处理
结合表结构和表数据,把需要用的field提取出来建个新集合
原表结构:
新表结构:
查询语句:
数据备份
CentOs 系统安装MongoDB记录浏览
“Tools”——>“Data Transfer”
这样就是在备份了。
<————————————————— 分 隔 符 ——————————————————>
记录下官方的资源:
下载SQL Server 2019 Developer和SQL Server 2019 Developer免费的专用版本,还包括SQL Server 工具和连接器