四款常见数据库比较同步软件汇总
前言:
目前,数据库技术在各行各业的应用正在逐步加深,在这些应用中普遍采用分布式系统结构。而数据库同步技术是分布式数据库系统中应用非常广泛的一种技术。分 布式数据库系统由多个通过网络连接的数据库组成,它们通常有主从服务器之分。有很多数据库系统都提供了数据库同步功能,就如《如何实现数据库同步》一文中所展示的:通过配置SQL Server数据库,就可进行数据库同步。但由于实际应用中客户需求的多样性,这种功能有时不能满足应用需求,因此需要使用数据库同步软件工具。今天就为大家介绍几款这样的工具软件。
SQL Compare
SQL Compare作为一款数据库比较同步软件,它能自动将一个在本地数据库上创建的数据库变更分发到远程服务器上的测试、分期或实时数据库。SQL Compare能够用于:
节省比较和同步数据库结构的时间
消除从开发到测试到生产迁移数据库变更的错误
加快新数据库结构更新的开发
生成T-SQL脚本用于更新一个数据库以匹配另外一个结构
查找和修复数据库之间的差异引起的错误
在SSMS中比较和同步
部署到SQL Azure数据库,或在Amazon RDS上的SQL Server
SQL Delta
SQL Delta是一款能够负载两个SQL数据库架构并快速定位在数据库中的表、视图、存储过程或其他对象的差异的数据库工具。SQL Delta也能够查找到两个数据库的数据差异。它的功能特点如下:
同步两个数据库的架构
同步两个数据库的数据
易于查看数据库之间的差异
自动生成和运行变更脚本
项目经理能够控制对比工程
生成包含差异、架构和数据报表的综合包表
生成离线对比的快照
运行预定比较和控制SQL Delta使用命令行脚本
D-Softs DB Compare
D-Softs DB Compare是一种快速,全面的数据库结构和数据比较工具.dbc确保您的应用程序不会因为一个丢失的数据库失败,提出在表,视图,存储过程或任何其他数据库中对象的差异。功能特点如下:
比较数据库架构并同步差异
DBC能够自动地生成并运行变更脚本
同步两个SQL 数据库的结构
同步两个SQL 数据库的数据
节省比较和同步数据库结构的时间
提高部署新数据库架构更新的速度
SyncNavigator
SyncNavigator 是一款 SQLSERVER,MYSQL 数据库同步软件。它为您提供一种简单智能的方式完成复杂的数据库数据同步,分发操作。 功能特点如下:
快速,持续,稳定的同步数据库数据。
在数据增加,修改或者删除后自动同步到目标数据库。
不编写SQL语句,不使用数据库管理工具。
不使用ODBC连接模式,全部采用原生驱动组件。
即使在不同数据库版本间的同步也保持高转换精度。
支持断点续传和热备份。
支持服务端/客户端模式,方便远程管理。
总结:
以上四款软件均属于便捷实用的数据库管理工具。使用它们可以找到主从数据库服务器的异同点,使产品数据库与开发数据库同步,减少因为同步数据库而进行复杂 的工作。更可以使用对比和同步功能来为目前的项目创建一个供测试使用的数据库。看了它们如此出色的功能,如果你不想自己写日志或是写脚本程序同步数据库的 话,那么这四款工具软件会是一个不错的选择。
分类: C# Asp.net,SqlServer
本文转自快乐就好博客园博客,原文链接:http://www.cnblogs.com/happyday56/p/3392782.html,如需转载请自行联系原作者
区块链数据分析必备工具BlockETL
BlockETL软件包用于比特币区块链数据分析中的数据抽取/转换/加载(ETL),可以从原始的比特币区块文件中抽取区块与交易数据并加载入通用SQL数据库,以便于后续的数据分析处理,非常适合区块链数据分析相关的毕业设计或课题研究项目。BlockETL官方下载地址:http://sc.hubwiz.com/codebag/blocketl-java/。
1、软件包概述
BlockETL软件包的主要特性如下:
直接读取原始区块文件,抽取速度快
将原始区块和交易数据加载至SQL数据库,便于后续的区块链数据分析
支持多流水线并行处理,可自己控制并发流水线数量
结构设计清晰,代码便于扩展
BlockETL软件包采用Java开发,支持Windows、OSX和Linux等多种操作系统,当前版本1.0.0,主要类/接口及关系如下图所示:
BlockETL软件包的目录组织及主要代码文件清单如下:
代码文件
说明
build.gradle
Gradle根项目构建文件
settings.gradle
Gradle根项目配置文件
blocketl/
blocketl库代码目录
blocketl/build.gradle
blocket库gradle构建文件
blocketl/src/main/java/blocketl/IPipe.java
ETL流水线管道接口定义
blocketl/src/main/java/blocketl/Pipeline.java
ETL流水线模型类
blocketl/src/main/java/blocketl/Kit.java
ETL流水线并发管理类
blocketl/src/main/java/blocketl/btc/FileExtractor.java
Bitcoin区块文件抽取管道实现类
blocketl/src/main/java/blocketl/btc/DummyTransformer.java
Bitoin区块及交易数据转换实现类
blocketl/src/main/java/blocketl/btc/SqlLoader.java
SQL数据库加载类
sql/
SQL脚本目录
sql/ddl.sql
数据库及表结构定义SQL脚本
sql/index.sql
数据表索引构建SQL脚本
sql/stats.sql
分析统计演示SQL脚本
demo/
blocketl库使用演示代码目录
demo/build.gradle
演示应用gradle构建文件
demo/src/App.java
演示应用主文件
demo/src/log4j.properties
log4j日志配置文件
2、软件包使用方法
在开始使用软件包之前,请先安装好gradle 6、jdk 8和所选择的SQL数据库。下面以MySQL为例说明使用过程:
安装mysql服务器,参考文档:Install and Upgrading MySQL。
安装jdk 8,参考文档:JDK 8 Installation
安装gradle 6,参考文档:Gradle Installation。
2.1 初始化数据库/表结构
进入软件包的sql目录,使用ddl.sql脚本创建数据库和基础表结构:
mysql -u root -p < ddl.sql
上述命令会要求交互输入root用户的密码,也可以使用其他有足够权限的用户名/密码。成功执行后,上述命令将创建数据库bitcoin_analysis和基础数据表:
blocks:比特币区块头数据表
transactions:比特币交易头数据表
tx_inputs:比特币交易输入数据表
tx_output:比特币交易输出数据表
2.2 抽取流程配置
首先根据自己的基础环境配置,修改demo/src/App.java文件中的区块目录和数据库连接信息并保存:
String dataDir = "…"; //区块数据文件目录
String dbUrl = "jdbc:…. "; //SQL数据库连接URL
String dbUser = "…", //SQL数据库用户名
String dbPassword = "…"; //SQL数据库密码
String network = "mainnet"; //主网:mainnet,测试网:testnet
2.3 数据抽取与加载
进入软件包的demo目录,使用gradle run或gradle.bat run命令启动演示应用,可以看到屏幕输出的数据加载进度:
软件包的demo应用除了在屏幕输出日志,也会记录到当前目录下的app.log文件中,可以利用此文件排查故障。
要长时间无人值守运行,可以使用gradle distZip打包后再执行编译好的程序。
2.4 数据分析
一旦完成区块链数据的抽取并加载到SQL数据库中,就可以进行数据分析了。
为了提高数据加载速度,在之前的ddl.sql中没有定义数据表的索引,因此在进行数据分析之前,首先要使用index.sql来建立数据表索引以加速统计查询的执行。进入sql目录执行如下命令完成索引构建,根据要求输入密码:
mysql -u root -p < index.sql
索引建立之后,就可以利用SQL进行数据分析了。预置的stats.sql提供了几个基本的分析,可以作为参考。
官方下载地址:BlockETL - 汇智网
SQL Azure(一) 入门
《Windows Azure Platform 系列文章目录》
SQL Azure是什么?
SQL Azure是微软基于Microsoft SQL Server Denali,也就是SQL Server 2012构建的云端关系型数据库服务。SQL Azure是SQL Server的一个大子集,能够实现SQL Server的绝大部分功能,并且将它们作为云端的服务来扩展。SQL Azure Database提供内置的高精准、可用性、功效与其他功能。
一般情况下,如果企业内部需要新建一个数据库服务,需要经历采购硬件、网络布线、安装操作系统、安装驱动程序、安装数据库软件等过程,整个过程显得漫长而繁琐,并且后期需要IT人员来维护数据库服务器。
但哪些订阅SQL Azure服务的用户,可以方便快速使用SQL Azure服务而不需要采购任何硬件和安装软件。对于用户来说,SQL Azure就像是一个在Internet上已经创建好的SQL Server服务器,由微软托管和运维,并且部署在微软的6大数据中心。用户只要简单的选择离自己物理位置最近的数据中心,就能立刻快速的享受到SQL Azure的服务。
SQL Azure能提供:
- 传统SQL Server的功能,如表、视图、函数、存储过程和触发器等。
- 数据同步:提供数据同步和聚合功能
- 管理:为SQL Azure提供自动配置、计量、计费、负载均衡、容错和安全功能。
- 数据访问:定义访问SQL Azure的不同编程方法,目前SQL Azure支持TDS,包括ADO.NET,实体框架,ADO.NET Data Service,ODBC,JDBC和LINQ客户端。
SQL Azure Database与SQL Server Database有什么不同?
SQL Azure Database提供由微软托管的在云端的高可用性,可扩展性,多租户数据库服务。SQL Azure Database可以实现自主管理,供应与更简便的多数据库部署。开发者不必安装或管理任何软件。对于企业使用者来说,因为没有安装硬件和部署软件的过程,所以也降低了获得Database的时间与成本。
对于开发者来说,可以利用已有的T-SQL开发知识与熟悉的关系数据模式来使用SQL Azure进行开发和管理。SQL Azure Database可以让我们通过使用已有的开发工具,比如Visual Studio, SQL Server Management Studio来进行开发。同时SQL Azure Database还支持Ado.net, ODBC等连接方式,并且支持Entity Framework。
SQL Azure Database有哪些新特性?
SQL Azure Database会自动进行三重备份,也就是说SQL Azure Database会自动将其自身复制到同一个数据中心不同物理主机之上,产生一个主备份和2个副备份。这样就提高了SQL Azure的可靠性、可用性、企业级别的安全特性,增加了数据库的安全性。如下图所示:
Data Sync (数据同步)
有些特殊的情况下,可能需要让局域网内的SQL Server数据和云端的Windows Azure数据库保持数据一致,SQL Azure的Data Sync功能能方便的让您本地的SQL Server 2008/SQL Server 2008 R2数据库服务器与云端的SQL Azure数据库进行同步。它提供单向和双向数据同步,从而让数据可以轻松地在 SQL Azure 数据库和内部部署 SQL Server 数据库之间以及在同一数据中心或不同数据中心中的多个 SQL Azure 数据库之间进行共享。
使用SQL Azure Database的好处是什么?
1.降低了总体拥有成本(TCO)
因为SQL Azure Database是云端的关系型数据库,您无需安装硬件、操作系统和数据库软件等过程,所以不需要IT人员来管理数据库,也不会产生License等费用;并且SQL Azure Database的费用是按创建个数和数据库大小来进行收费的,您在不需要的情况下也可以删除数据库,这样就不会产生任何费用。
2.提高了可用性
因为SQL Azure Database支持三重备份,您无需部署集群(Cluster)和心跳网卡等过程。
3.多租户
对于独立软件研发商(ISV)来说,他们可以在构建一套Web Site的情况下,使用SQL Azure。把用户的数据和配置放在相同(不同)的数据库(数据表)中进行隔离,那就可以让多个用户(租户)使用同一套系统,而且该租户只能看到自己的数据,不能看到其他租户的数据(也可以通过加密的方式,即使其他租户看到该数据也无法解析)。
在使用SQL Azure Databse后开发模式有哪些改变?
之前,SQL Azure Database 支持具有弹性的,基于实体的数据模式。在收集了大量有价值的反馈之后,很明显我们的云端需要一个完全关系型数据模式。SQL Azure 呈现了从ACE编程模式到具有许多熟悉的类SQL Server的编程模式概念的关系型数据模式的转变。开发者可以使用现有的Transact-SQL 代码去访问云端的数据。他们也会创建或修改使用Transact-SQL代码应用程序,来与完全关系型云数据库服务交互。 另外,他们也可以通过使用现有的数据访问框架,如:ADO.NET数据服务,来提供REST或者SAOP服务。
SQL Azure Database如何收费?
SQL Azure Database基于创建和每天消耗数据库数量的平均值,按月收费。
参考资料:http://blogs.msdn.com/b/azchina/archive/2010/03/01/sqlazurefaq.aspx
分类: Azure SQL Database
本文转自Lei Zhang的博客博客园博客,原文链接:http://www.cnblogs.com/threestone/archive/2012/01/31/2332370.html,如需转载请自行联系原作者
护卫神全能镜像上如何快速安装SQL SERVER数据库呢?
考虑到SQL SERVER软件版权的问题,同时也考虑到主机性能问题。
护卫神全能型镜像中并没有集成安装SQL SERVER,而很多客户可能需要这个数据库。
经常护卫神开发的努力,目前推出了一键安装SQL SERVER数据库的软件。
软件详情地址:https://www.huweishen.com/help/news/1669.html
如需要安装SQL SERVER的用户可下载软件到镜像系统中,执行安装,软件一键安装完毕,非常方便。
软件目前只支持安装SQL SERVER2008 Express(32/64位)及SQL SERVER2012 Express(32/64位)
《Oracle达人修炼秘籍:Oracle 11g数据库管理与开发指南 》一1.6 关系数据库
1.6 关系数据库
1.6.1 关系数据库的功能
采用关系模型的数据库系统称为关系数据库系统,其主要功能如下。数据定义:提供数据定义语言(Data Definition Language,DDL),用户利用该语言可以定义数据库的三级模式(外模式、模式、内模式)、两级映像(外模式/模式、模式/内模式),定义数据的完整性、安全性约束等。数据操作:提供数据操作语言(Data Manipulation Language,DML),实现对数据库的操作,包括数据查询、插入、删除、修改等。数据库运行与控制:提供数据库运行和控制功能,保证所有访问数据库的操作在控制程序的统一管理下进行,保证了数据的安全性、完整性、多用户对数据库的并发操作,以及数据库在故障发生时的恢复。数据库的建立与维护:提供实用程序来完成数据库的初始数据输入和数据转换等,完成数据库数据的转储、恢复、重组织、系统性能监控和分析等。 数据库接口:提供与其他软件系统进行交互、通信和操作的接口。
1.6.2 常见的关系数据库管理系统
目前,市场上常见的关系数据库管理系统包括Oracle、DB2、Sybase和SQL Server等。
OracleOracle是当今最大的数据库厂商Oracle公司的数据库产品。它是世界上第一个商品化的关系型数据库管理系统,也是第一个推出与数据库结合的、应用第四代语言开发工具开发的数据库产品。
Oracle数据库采用标准SQL语言,支持多种数据类型,提供面向对象操作的数据支持,支持UNIX、VMS、Windows、OS/2等多种平台。Oracle公司的软件产品主要由3部分构成:Oracle服务器产品、Oracle开发工具和Oracle应用软件。其中,服务器产品包括数据库服务器和应用服务器。当前Oracle最新版本为Oracle 11g,但使用最广的产品为Oracle 10g。
DB2DB2是IBM公司于1983年推出的一个商业化关系数据库管理系统,它是基于System R基础实现的。
20世纪80年代初期,DB2主要运行在大型主机平台上。从20世纪80年代中期到90年代初,DB2已发展到中型机、小型机以及微机平台,可以运行在各种不同的操作系统平台上,如UNIX、VMS、Windows、OS/2等。DB2在金融系统应用较多。DB2 Universal Database Personal Edition 是专为OS/2和Windows系统的单用户提供的数据库管理系统;DB2 Universal Database Workgroup Edition 是专为OS/2和Windows系统的多用户提供的数据库管理系统。
SybaseSybase是Sybase公司发布的关系数据库产品。Sybase公司成立于1984年,于1987年5月推出了关系数据库Sybase SQL Server 1.0。该公司首先提出了客户机/服务器的思想,并率先在Sybase SQL Server中实现。现在,Sybase可以运行在不同的操作系统平台上,如UNIX、VMS、Windows、Netware等。作为网络数据库,Sybase采用开放的体系结构,支持网络环境下各节点数据库的互相访问。
Sybase数据库主要由服务器软件Sybase SQL Server、客户软件Sybase SQL Toolset和接口软件Sybase Client/Server Interface等3类软件产品组成。其中Sybase SQL Server服务器软件中的Sybase SQL Anywhere是Sybase的单机版本,是一个完备的、小型关系数据库管理系统,支持完全的事务处理和SQL功能,可以胜任小型数据库应用系统的开发。此外,Sybase还拥有数据库开发工具PowerBuilder,能够快速开发出基于客户机/服务器工作模式、Web工作模式的图形化数据库应用程序。
Microsoft SQL ServerMicrosoft SQL Server是微软公司推出的应用于Windows操作系统上的关系数据库产品。Microsoft SQL Server是Microsoft公司从Sybase公司购买技术而开发的产品,与Sybase数据库完全兼容,它支持客户机/服务器结构。
Microsoft SQL Server只支持Windows操作平台。它不提供直接的客户开发工具和平台,只提供ODBC和DB-Library两个接口。ODBC接口是一个开放的、标准的访问数据库的接口,允许程序员在多种软件平台上使用第三方的开发工具;DB-Library是用C语言开发的API,供程序员访问Microsoft SQL Server。
SSMA迁移本地的MY SQL到本地SQL server及windows azure SQL Databaase
说到数据库,很多人都会想到MY Sql、SQL Server及oracle等等,同时很都人首选MY SQL,因为MY SQL是免费的,而且数据包也比较小,安装快捷方便,而SQL Server是收费的,是微软的产品,收费相当高,一般很少用,除非大数据,当然在资金满足的情况下会选择oracle数据库了,这些我就不具体说了,今天呢,我们主要介绍一下如何将本地的MY SQL数据迁移到SQL Serrver下,不管什么服务,迁移数据是最痛苦的事了,那有没有一种比较智能的方法做迁移呢,答案那是必须的,那是什么 呢?那就是微软提供了一个工具SSMA,
SSMA(SQL Seerrver Migration Assistant)的软件服务器提供将本地的MY SQL迁移到SQL Server及windows azure SQL Servrer Dabase,具体操作见下:
首先是下载该软件:
http://www.microsoft.com/en-us/search/result.aspx?q=microsoft sql server migration assistant 2008 for mysql
下载后开始安装
提示本地没有找到MY SQL ODBC的驱动,可以单击下载
http://dev.mysql.com/downloads/connector/
http://dev.mysql.com/downloads/connector/odbc/
下载后我们安装即可
开始安装
安装完成
我们继续安装SSMA
开始安装SSMA
工具安装完成
安装后,桌面多一个Microsoft SQL Server Migration Assing
启用该程序
首先创建一个新的项目 启动程序后,单击左上角 新建项目图标
然后选择你要迁移到SQL Server还是SQL Azure中(我们选择SQL服务器)
创建完项目后,我们链接MY Sql,因为我们要将MY SQL迁移
MY SQL链接认证
连接到MySQL
点击左上角的连接到MySQL图标(你必须 确认已安装MySQL的ODBC连接器 ),这时你的MySQL数据库信息将以树视图显示
创建一个模式迁移报告
选择要迁移的数据库,然后用鼠标右键单击数据库名称,并选择创建报告:
.连接到SQL Server(或SQL Azure,这取决于你在第3步中选择)
点击“连接到SQL Server图标的左上角。您可以提供的凭据连接到SQL Server或SQL Azure。如果您在步骤4中选择的MySQL数据库的数据库具有相同的名称不存在,你会被询问是否要创建一个。
注意:如果你不想SSMA为您创建数据库时,您应该在连接对话框中指定你要迁移到的数据库。默认情况下,SSMA转换MySQL数据库DB1中的所有对象到SQL Server架构DB1.dbo的SQL Server数据库DB1之前,必须同步创建(见第8步)。这样做的最简单的方法是在建立连接到SQL Server数据库时,在SQL Server连接对话框中指定数据库名称。
因为我们要迁移到SQL Server,所以还需要链接SQL Server
MY SQL和SQL Server都链接成功
您现在应该可以看到SQL Server的SQL Server数据在SQL Server资源管理器中的树视图,选择您要迁移的模式。
7.转换模式(即表)在MySQL的元数据资源管理器中,右键单击要迁移的数据库,然后选择 " 转换模式 " :
在这一点上,你可能需要在转换的模式中作出一些改变,例如,我选择了link_updated列,它是一个可为空的列,因为此列MySQL设置了默认值,而0000-00-00 00:00:00,是一个特殊值,将被视为一个空值数据来迁移,当数据迁移的时候如果不做改变,这种变化可能会导致错误。
SQL Server数据库的同步
在SQL Server中选择要同步到的数据库,右键单击选择 与数据库同步
确认要同步的数据库,确认
同步完成
迁移数据
在MySQL元数据资源管理器中,右键单击要迁移的数据库,并选择迁移数据,输入MySQL和SQL Server数据库的连接凭据。
迁移前提示验证数据库认证
开始迁移数据
迁移成功
如果要迁移到windows azure SQL Database下 ,我们需要在第一步创建项目的是实话选择SQL Azure,在此不多介绍了额,因为SSMA软件目前对MY SQL到SQL Serrver的迁移不支持国内的windows azure在,只支持国际版本的wiindows azure。不是不支持,而是目前该软件如果选择迁移到windows azure的话,数据库连接只有国际域名(database.azure.cloud.net),没有国内的windows azure域名(database.azure.cloud.cn)。所以没有选项连接到国内的windows azure database
本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1581630,如需转载请自行联系原作者
数据库软件的发展
数据库是网站建设不可缺少的一块,数据库的功能也很欠打,而可以使用的数据库软件随着科技的发展也越来越多,接下来
企业网站模板:http://wm987.com 小编给大家介绍一下数据库软件的发展吧。
常用数据库软件:IBM 的DB2:第一个具备网上功能的多媒体关系数据库管理系统,支持包括Linux在内的一系列平台。甲骨文公司的Oracle:支持最广泛的操作系统平台。Informix的Informix Sybase公司的SybasePostgreSQLSun公司的mySQL:体积小、速度快、总体拥有成本低,开放源码,被广泛地应用在Internet上的中小型网站中。Microsoft的SQL Server、Access数据库、FoxPro数据库 一、SQL Server 的发展历史
由关系数据库 Sybase演变而来。
1988年,由Microsoft、Sybase和Ashton-Tate三家公司共同开发OS/2版本。
94年后,Sybase公司致力于开发UNIX系统下的数据库系统;Microsoft公司继续开发基于WindowsNT的SQL Server系列数据库系统
96年,SQL Server 6.5版本;98年,SQL Server 7.0版本;2000年,正式发行SQL Server 2000版本。
《SQL初学者指南(第2版)》——1.1 SQL是什么
本节书摘来自异步社区出版社《SQL初学者指南(第2版)》一书中的第1章,第1.1节,作者:【美】Larry Rockoff,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.1 SQL是什么
那么SQL到底是什么呢?简而言之,SQL就是为了维护和使用关系型数据库中的数据而使用的一种标准的计算机语言。简单来说,SQL就是能让用户和关系型数据库进行交互的一种语言。SQL语言有很长的发展历史,很多组织都对它的发展做出了贡献,它最早的历史可以追溯到20世纪70年代。1986年,美国国家标准局(American National Standards Institute,ANSI)发布了该语言的第一套标准,从那时起,它经历过多次的修订。
一般来讲,SQL语言有3个主要的组成部分。第1个部分叫做数据操纵语言(Data Manipulation Language,DML)。SQL语言的这个模块让我们可以检索、修改、增加或删除数据库中的数据。第2个部分叫做数据定义语言(Data Definition Language,DDL)。DDL使得我们能够创建和修改数据库本身。例如,DDL提供了ALTER语句,它让我们可以修改数据库中的表的设计。第3个部分是数据控制语言(Data Control Language,DCL),用于维护数据库的安全。
许多主要的软件厂商,像Microsoft和Oracle,为了其各自的目的,都会修改这个标准,并且对该语言添加大量的扩展和修改。尽管每个厂商对于SQL都有自己独特的解释,但是仍然会有一个底层的基础语言,而它对于所有厂商几乎都是一致的。这个基础语言,也正是本书所要介绍的内容。
作为一种计算机语言,和你可能熟悉的其他语言(如Visual Basic或C++)相比,SQL并不相同。其他语言本质上往往趋向于过程化。这就意味着,它们允许你指定特定的过程来完成想要实现的任务。SQL更趋向于一种声明式语言(Declarative Language)。在SQL中,经常用一条单独的语句来声明预期的目标。SQL的结构之所以如此简单,是因为它只关注关系型数据库,而不是整个计算机系统。
关于SQL语言,还有一点需要澄清,人们经常会把SQL语言和具体的SQL数据库搞混。有很多的软件公司销售数据库管理系统(Database Management System,DBMS)。通常,这些类型的软件包中的数据库称为SQL数据库,因为SQL语言是管理和访问这些数据库中的数据的主要方法。一些厂商甚至把SQL作为其数据库名称的一部分。例如,Microsoft把它最新的数据库叫做SQL Server 2016。但实际上,更准确地讲,SQL是一种语言,而不是一个数据库。本书的重点是介绍SQL的语言,而不是介绍任何一种特定的数据库。
连接SDE空间数据库——SQL Server篇
一、软件配置
要从 ArcMap 连接至 SQL Server 中的数据库或地理数据库,请在 ArcMap 计算机上安装 SQL Server native client 或 Microsoft ODBC driver 11 for SQL Server
二、手动链接
打开Catalog,选择数据库连接下的添加数据库连接。
在弹出的设置窗口中,设置如下参数:
(1)数据库平台,选择SQL Server;
(2)实例,直接填写数据库所在的服务器IP地址和端口号(没有像oralce那样复杂):
如果是本机,且是默认端口,填写localhost;
如果是本机,且是默认端口,填写localhost:端口号;
如果是远程,且是默认端口,填写远程IP;
如果是远程,是非默认端口,填写远程IP:端口号;
(3)身份验证类型:如果不是Windows验证,则需要输入相应用户名和密码。
(4)选择需要连接的数库,确定。
官方帮助:http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/databases/connect-sqlserver.htm
三、代码链接
通过JDBC连接Oracle数据库中的十大技巧
1、在客户端软件开发中使用Thin驱动程序
在开发Java软件方面,Oracle的数据库提供了四种类型的驱动程序,二种用于应用软件、applets、servlets等客户端软件,另外二种用于数据库中的Java存储过程等服务器端软件。在客户机端软件的开发中,我们可以选择OCI驱动程序或Thin驱动程序。OCI驱动程序利用Java本地化接口(JNI),通过Oracle客户端软件与数据库进行通讯。Thin驱动程序是纯Java驱动程序,它直接与数据库进行通讯。为了获得最高的性能,Oracle建议在客户端软件的开发中使用OCI驱动程序,这似乎是正确的。但我建议使用Thin驱动程序,因为通过多次测试发现,在通常情况下,Thin驱动程序的性能都超过了OCI驱动程序。
阿里云代金券1000元免费领取地址:https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=2a7uv47d 新老阿里云账户均可领取!可用于购买阿里云服务器ECS、云数据库RDS、虚拟主机、安骑士、DDoS高防IP等100多云计算产品。 代金券自领取之日起,有效期是30天,请及时使用,过30天后还可以重新领取。
2、关闭自动提交功能,提高系统性能
在第一次建立与数据库的连接时,在缺省情况下,连接是在自动提交模式下的。为了获得更好的性能,可以通过调用带布尔值false参数的Connection类的setAutoCommit()方法关闭自动提交功能,如下所示:
conn.setAutoCommit(false);
值得注意的是,一旦关闭了自动提交功能,我们就需要通过调用Connection类的commit()和rollback()方法来人工的方式对事务进行管理。
3、在动态SQL或有时间限制的命令中使用Statement对象
在执行SQL命令时,我们有二种选择:可以使用PreparedStatement对象,也可以使用Statement对象。无论多少次地使用同一个SQL命令,PreparedStatement都只对它解析和编译一次。当使用Statement对象时,每次执行一个SQL命令时,都会对它进行解析和编译。这可能会使你认为,使用PreparedStatement对象比使用Statement对象的速度更快。然而,我进行的测试表明,在客户端软件中,情况并非如此。因此,在有时间限制的SQL操作中,除非成批地处理SQL命令,我们应当考虑使用Statement对象。
此外,使用Statement对象也使得编写动态SQL命令更加简单,因为我们可以将字符串连接在一起,建立一个有效的SQL命令。因此,我认为,Statement对象可以使动态SQL命令的创建和执行变得更加简单。
4、利用helper函数对动态SQL命令进行格式化
在创建使用Statement对象执行的动态SQL命令时,我们需要处理一些格式化方面的问题。例如,如果我们想创建一个将名字O'Reilly插入表中的SQL命令,则必须使用二个相连的“''”号替换O'Reilly中的“'”号。完成这些工作的最好的方法是创建一个完成替换操作的helper方法,然后在连接字符串心服用公式表达一个SQL命令时,使用创建的helper方法。与此类似的是,我们可以让helper方法接受一个Date型的值,然后让它输出基于Oracle的to_date()函数的字符串表达式。
5、利用PreparedStatement对象提高数据库的总体效率
在使用PreparedStatement对象执行SQL命令时,命令被数据库进行解析和编译,然后被放到命令缓冲区。然后,每当执行同一个PreparedStatement对象时,它就会被再解析一次,但不会被再次编译。在缓冲区中可以发现预编译的命令,并且可以重新使用。在有大量用户的企业级应用软件中,经常会重复执行相同的SQL命令,使用PreparedStatement对象带来的编译次数的减少能够提高数据库的总体性能。如果不是在客户端创建、预备、执行PreparedStatement任务需要的时间长于Statement任务,我会建议在除动态SQL命令之外的所有情况下使用PreparedStatement对象。
6、在成批处理重复的插入或更新操作中使用PreparedStatement对象
如果成批地处理插入和更新操作,就能够显著地减少它们所需要的时间。Oracle提供的Statement和 CallableStatement并不真正地支持批处理,只有PreparedStatement对象才真正地支持批处理。我们可以使用addBatch()和executeBatch()方法选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的批处理机制,可以以如下所示的方式调用setExecuteBatch():
PreparedStatement pstmt3D null; try {((OraclePreparedStatement)pstmt).setExecuteBatch(30); ...pstmt.executeUpdate(); }
调用setExecuteBatch()时指定的值是一个上限,当达到该值时,就会自动地引发SQL命令执行,标准的executeUpdate()方法就会被作为批处理送到数据库中。我们可以通过调用PreparedStatement类的sendBatch()方法随时传输批处理任务。
7、使用Oracle locator方法插入、更新大对象(LOB)
Oracle的PreparedStatement类不完全支持BLOB和CLOB等大对象的处理,尤其是Thin驱动程序不支持利用PreparedStatement对象的setObject()和setBinaryStream()方法设置BLOB的值,也不支持利用setCharacterStream()方法设置CLOB的值。只有locator本身中的方法才能够从数据库中获取LOB类型的值。可以使用PreparedStatement对象插入或更新LOB,但需要使用locator才能获取LOB的值。由于存在这二个问题,因此,我建议使用locator的方法来插入、更新或获取LOB的值。
8、使用SQL92语法调用存储过程
在调用存储过程时,我们可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并没有什么实际的好处,而且会给以后维护你的应用程序的开发人员带来麻烦,因此,我建议在调用存储过程时使用SQL92。
9、使用Object SQL将对象模式转移到数据库中
既然可以将Oracle的数据库作为一种面向对象的数据库来使用,就可以考虑将应用程序中的面向对象模式转到数据库中。目前的方法是创建Java bean作为伪装的数据库对象,将它们的属性映射到关系表中,然后在这些bean中添加方法。尽管这样作在Java中没有什么问题,但由于操作都是在数据库之外进行的,因此其他访问数据库的应用软件无法利用对象模式。如果利用Oracle的面向对象的技术,可以通过创建一个新的数据库对象类型在数据库中模仿其数据和操作,然后使用JPublisher等工具生成自己的Java bean类。如果使用这种方式,不但Java应用程序可以使用应用软件的对象模式,其他需要共享你的应用中的数据和操作的应用软件也可以使用应用软件中的对象模式。
10、利用SQL完成数据库内的操作
我要向大家介绍的最重要的经验是充分利用SQL的面向集合的方法来解决数据库处理需求,而不是使用Java等过程化的编程语言。
如果编程人员要在一个表中查找许多行,结果中的每个行都会查找其他表中的数据,最后,编程人员创建了独立的UPDATE命令来成批地更新第一个表中的数据。与此类似的任务可以通过在set子句中使用多列子查询而在一个UPDATE命令中完成。当能够在单一的SQL命令中完成任务,何必要让数据在网上流来流去的?我建议用户认真学习如何最大限度地发挥SQL的功能。