精华内容
下载资源
问答
  • SQL Server数据库中批量导入数据的四种方法 SQL Server数据库中批量导入数据的四种方法,软件项目实施的时候,数据导入一直是项目人员比较头疼的问题。其实,SQL Server中集成了很多成批导入数据的方法。...

    在SQL Server数据库中批量导入数据的四种方法

    在SQL Server数据库中批量导入数据的四种方法,在软件项目实施的时候,数据导入一直是项目人员比较头疼的问题。其实,在SQL Server中集成了很多成批导入数据的方法。有些项目实施顾问头疼的问题,在我们数据库管理员眼中,是小菜一碟。现在的重点就是,如何让用户了解这些方法,让数据导入变得轻松一些。

    第一:使用Select Into语句

    若企业数据库都采用的是SQL Server数据库的话,则可以利用Select Into语句来实现数据的导入。Select Into语句,他的作用就是把数据从另外一个数据库中查询出来,然后加入到某个用户指定的表中。

    在使用这条语句的时候,需要注意几个方面的内容。

    一是需要在目的数据库中先建立相关的表。如想把进销存系统数据库(SQLServer)中的产品信息表(Product)导入到ERP系统中的产品信息表(M_Product)中。则前期是在ERP系统的数据库中已经建立了这张产品信息表。

    二是这种方法只复制表中的数据,而不复制表中的索引。如在进销存系统数据中的产品信息表中,在产品编号、产品种类等字段上建立了索引。则利用Select Into语句把数据复制到ERP系统的表中的时候,只是复制了数据内容的本身,而不会复制索引等信息。

    三是这条语句使用具有局限性。一般情况下,这只能够在SQL Server数据库中采用。不过,对于SQL Server不同版本的数据库,如2008或者2003,还都是兼容的。若需要导入的对象数据库不是SQL Server的,则需要采用其他的方法。

    四是采用这条语句的话,在目的表中必须不存在数据。否则的话,目的表中的数据会被清除。也就是说,这个语句不支持表与表数据的合并。在SQL Server中,有一条类似的语句,可以实现这个功能。这条语句就是:Insert Into。他的作用就是把另外一张表中的数据插入到当前表中。若用户想要的时表与表数据的合并,则可以采用这条语句。两者不能够混淆使用,否则的话,很容易导致数据的丢失。

    五是以上两条语句都支持兼容的不同类型的数据类型。如在原标中,某个字段的数据类型是整数型,但是在目的表中这个字段的数据类型则是浮点型,只要这个两个数据类型本来就兼容的,则在导入的时候,数据库是允许的。

    第二:利用Excel等中间工具进行控制

    虽然第一种方法操作起来比较简单,但是其也有一些缺点。如他只支持同一种类型的数据库;不能够对数据进行过多的干预等等。一般情况下,若用户原数据准确度比较高,不需要过多的修改就可以直接拿来用的话,则笔者就已采用第一种方式。

    但是,若在原数据库中,数据的准确度不是很高,又或者,有很多数据是报废的。总之,需要对原数据库的数据进行整理,才能够使用的情况,笔者不建议先导入进去,再进行更改。笔者在遇到这种情况时,喜欢利用Excle作为中间工具。也就是说,先把数据中原数据库中导到Excle中。有些数据库,如Oracle数据库,他不支持Excle格式。但是,我们可以把它导为CSV格式的文件。这种文件Excle也可以打得开。

    然后,再在Excle中,对记录进行修改。由于Excle是一个很强的表格处理软件,所以,其数据修改,要比在数据库中直接修改来得方便,来得简单。如可以利用按时间排序等功能,把一些长久不用的记录清楚掉。也可以利用替换等功能,把一些不规范的字符更改掉。这些原来在数据库中比较复杂的任务,在Excle等工具中都可以轻松的完成。

    等到表中的内容修改无误后,数据库管理员就可以把Excle表格中的文件直接导入到SQL Server数据库中。由于SQL Server与Excel是同一个父母生的,所以,他们之间的兼容性很好。在Sql Server中提供了直接从Excel文件中导入数据的工具。

    虽然这要借助中间工具导入数据,但是,因为其处理起来方便、直观,所以,笔者在大部分时候都是采用这种方式。

    第三:使用数据转换服务导入数据

    数据转换服务是SQL Server数据库中提供的一个非常强大的工具。在SQLServer中,数据转换功能有一个图形用户接口,用户可以在图形界面中导入数据,并对数据进行相应的编辑。

    另外,数据转换服务还支持COM组件的编程接口。这也就是说,在前台应用程序开发的时候,可以直接调用数据转换服务。让用户通过前台应用系统,而不用在后台数据库系统进行任何的操作,就可以把数据导入数据库系统中去。在前台对数据库系统进行导入,有一个明显的好处,就可以预先对数据的合法性进行检查。如可以利用VB等脚本语言对数据进行检验、净化和一定的转换,以符合目的数据库的需要。

    如在员工信息表中的婚姻状况字段,在Oracle数据库系统中,可能是用0或者1来表示婚姻状况。0表示未婚,1表示已婚。而在SQL Server数据库中,则利用Y或者N来表示婚姻状况。Y表示已婚,N表示未婚。在导入数据的时候,若直接把Oracle数据库表中的数据导入到SQL Server数据库中,因为婚姻状况这个字段存储的内容类型不同,所以,不能够直接导。遇到这种情况的话,则就可以在导入数据之前,先利用脚本语言对数据类型进行验证。若不符合要求的,则可以通过脚本语言对数据进行一定的转换,把0转换为N,把1转换为Y等等。

    所以,有时候程序员在开发前台应用程序的时候,若要开发数据导入功能的话,我们都是建议采用这个数据转换服务。不但有现成的接口,而且,还可以对数据进行验证与一定程度的转换。另外,数据转换服务的数据导入效率非常的高。即使通过前台程序调用,其性能也比其他方法在同等条件下,要高一个档次。而且,随着数据量的增加,数据转换服务的优势会越来越明显。

    不过,在前台应用程序调用数据转换服务的时候,需要注意。数据转换服务提供的COM接口比较复杂,所以,前台程序调用数据转换服务的代码也比较复杂。若再加上一些脚本语言的话,可能处理起来更加的繁琐。故一般只有在大型系统上才会用到这个接口。若数据不多,否则不需要复杂验证与转换的话,利用这个接口是大刀小用,得不偿失。

    第四:异构数据库之间的导入导出

    虽然第二种、第三种方式都可以完成异构数据库之间数据的导入导出作业。不过,在SQL Server中,还提供了另外一种解决方案。即直接在SQL Server数据库中连接到其他类型的数据库上,然后采用Select Into等语句实现数据的导入作业。

    在SQL Server中,提供了两个函数可以帮助我们实现对非SQL Server数据库的连接。这两个函数分别为Opendatesource与Openrowset。他们的功能基本相同,只是在细节上有所差异。

    如Opendatesource这个函数至能够打开源数据库的表和视图,而不能够对其进行过滤。若用户只想把源表中的部分数据导入到SQL Server数据库的表中,则不能对源表直接进行过滤。过滤的动作需要在SQL Server数据库中进行。而Openrowset这个函数,可以在打开对方数据库的表或者视图的时候,直接利用Where等条件限制语句对记录进新过滤。为此,在实际应用中,还是Openrowset这个函数使用的频率比较高。

    不过由于其需要用户写复杂的参数,而且,又不能够提供复杂的数据验证功能,所以在实际工作中用的并不是很多。在一些小的应用系统中,偶尔还可以见到其的踪影。在一些大的成熟的商业软件中,很少采用这种方式,对数据进行导入。

    有时候,选择多了,用户反而不知道如何下手。笔者平时最喜欢采用的是第二种处理方式。他比较直观,而且,可以对数据进行成批的更改与整理。但是,其缺陷就是效率比较低,特别是Excle软件对于处理大量记录的时候,速度比较慢。若这种方式行不通的话,则笔者比较倾向于采用数据转换的处理方式。这个操作起来虽然比较复杂,但是,其可以提供比较复杂的验证,而且可以在图形化的界面中对数据进行修改,同时效率也比较高。

    转载于:https://www.cnblogs.com/Dageking/archive/2013/03/27/2984177.html

    展开全文
  • 其实,SQL Server集成了很多成批导入数据的方法。有些项目实施顾问头疼的问题,我们数据库管理员眼中,是小菜一碟。现在的重点就是,如何让用户了解这些方法,让数据导入变得轻松一些。相信以下方法大家都用过...
  • 其实,SQL Server集成了很多成批导入数据的方法。有些项目实施顾问头疼的问题,我们数据库管理员眼中,是小菜一碟。现在的重点就是,如何让用户了解这些方法,让数据导入变得轻松一些。 第一:使用Select Into...
  • 如何在数据库中轻松导入excel格式的文件 1)打开sql server,找到要导入数据的数据库,右键>>任务>>导入数据 2)按照图示选择要导入的excel 3)选择导入到哪个数据库 4)导入...

    如何在数据库中轻松导入excel格式的文件

    1)打开sql server,找到要导入数据的数据库,右键>>任务>>导入数据

     

     

    2)按照图示选择要导入的excel

     

    3)选择导入到哪个数据库

     

    4)导入excel选择第一项即可,选择第二项是表与表直接内容的筛选复制

    5)选择源表和源视图,可预览表中数据

     

     

     

    6)编辑映射页面(如上一步图)

    7)继续下一步,点击完成,看到传输数据完成页面

     

     

    8)进入数据库刷新,查看刚刚导入的表,完成!

     

    转载于:https://www.cnblogs.com/lstory/p/7121956.html

    展开全文
  • 下面,我们以MySQL数据库为例来看看如何在数据库中导入excel文件内的数据吧。操作方法01MySQL打开MySQL数据库,然后在在MySQL中新建一个【student】表,创建列为ID和Name,如下图所示:02Excel新建一张Excel,Excel...

    在开发项目的时候通常需要使用数据库,数据库Database是用来存储和管理数据的仓库。下面,我们以MySQL数据库为例来看看如何在数据库中导入excel文件内的数据吧。

    5326c32539066ec532b1a1319c0e9bc9.png

    操作方法

    01

    MySQL

    打开MySQL数据库,然后在在MySQL中新建一个【student】表,创建列为ID和Name,如下图所示:

    9879a06f64ed3a3b96fdfdddcbf605ed.png

    02

    Excel

    新建一张Excel,Excel列中的名字要与数据库中student的列名一样,如下图所示:

    66698ffaa0e8b0f4154368bf4bf29330.png

    03

    导入向导

    右击数据库中的【student】表,在弹出的下拉菜单中选择【导入向导】,如下图所示:

    7f53a1e5dc49c7a5b2d3277ea1243d9a.png

    04

    选择数据格式

    会弹出一个【导入向导】窗口,选择数据的格式,比如excel的格式为.xlsx,当然有的excel的格式为.xls,根据后缀名而定,如下图所示:

    6683c7412c6a0e9eb20e2d0e56a604ce.png

    05

    导入excel

    然后要导入方才新建的excel文件,选择文件的存放位置,然后点击【打开】按钮即可,如下图所示:

    943e44933a7868b1aba6c400c1a8881f.png

    06

    选择sheet

    然后选择要导入excel文件中的哪一个sheet,比如选择sheet1,然后点击【下一步】按钮,如下图所示:

    7b7ce2abe42c4692a3316188d9f41e74.png

    07

    导入模式

    然后一直点击【下一步】按钮来到【导入模式】,勾选【添加:添加记录到目录表】选项,点击【下一步】按钮,如下图所示:

    8a671644758038ff93bd17b25980d496.png

    08

    开始导入

    点击【开始】按钮,当出现【Finished -Successfully】提示时即表示导入成功,如下图所示:

    8046c1b5450f905044d494b6d7576f62.png

    好了,以上就是大致内容了,(END)

    声明:该文观点仅代表作者本人,天晴资讯网系信息发布平台,仅提供信息存储空间服务。

    展开全文
  • 用Java导入excel文件,将数据存放在数据库中导入文件多次,Java如何处理文件多次导入问题?
  • <p>I'm trying to import XML data into our database(mariadb).... <p>Our XML structure: <pre><code> <...xml version="1.0" encoding="UTF-8"?...<pre><code>+----+---------------+-----------+------+---------...
  • 软件项目实施的时候,...其实,SQL Server集成了很多成批导入数据的方法。有些项目实施顾问头疼的问题,我们数据库管理员眼中,是小菜一碟。现在的重点就是,如何让用户了解这些方法,让数据导入变得轻松一些。
  • Manager进程:需要源端跟目标端同时运行,主要作用是监控管理其它进程,报告错误,分配及清理数据存储空间,发布阈值报告等Extract进程:运行在数据库源端,主要用于捕获数据的变化,负责全量、增量数据的抽取Trails...

    Manager进程:需要源端跟目标端同时运行,主要作用是监控管理其它进程,报告错误,分配及清理数据存储空间,发布阈值报告等

    Extract进程:运行在数据库源端,主要用于捕获数据的变化,负责全量、增量数据的抽取

    Trails文件:临时存放在磁盘上的数据文件

    Data Pump进程:运行在数据库源端,属于Extract进程的一个辅助进程,如果不配置Data Pump,Extract进程会将抽取的数据直接发送到目标端的Trail文件,如果配置了Data Pump,Extract进程会将数据抽取到本地Trail文件,然后通过Data Pump进程发送到目标端,配置Data Pump进程的主要好处是即使源端到目标端发生网络中断,Extract进程依然不会终止

    Collector进程:接收源端传输过来的数据变化,并写入本地Trail文件中

    Replicat进程:读取Trail文件中记录的数据变化,创建对应的DML语句并在目标端回放

    二、迁移方案

    (一)环境信息

    OGG版本    OGG 12.2.0.2.2 For Oracle    OGG 12.2.0.2.2 For MySQL

    数据库版本    Oracle 11.2.0.4    MySQL 5.7.21

    OGG_HOME    /home/oracle/ogg    /opt/ogg

    (二)表结构迁移

    表结构迁移属于难度不高但内容比较繁琐的一步,我们在迁移表结构时使用了一个叫sqlines的开源工具,对于sqlines工具在MySQL端创建失败及不符合预期的表结构再进行特殊处理,以此来提高表结构转换的效率。

    注意:OGG在Oracle迁移MySQL的场景下不支持DDL语句同步,因此表结构迁移完成后到数据库切换前尽量不要再修改表结构。

    (三)数据迁移

    数据同步的操作均采用OGG工具进行,考虑数据全量和增量的衔接,OGG需要先将增量同步的抽取进程启动,抓取数据库的redo log,待全量抽取结束后开启增量数据回放,应用全量和增量这段期间产生的日志数据,OGG可基于参数配置进行重复数据处理,所以使用OGG时优先将增量进行配置并启用。此外,为了避免本章节篇幅过长,OGG参数将不再解释,有需要的朋友可以查看官方提供的Reference文档查询任何你不理解的参数。

    1.源端OGG配置

    (1)Oracle数据库配置

    针对Oracle数据库,OGG需要数据库开启归档模式及增加辅助补充日志、强制记录日志等来保障OGG可抓取到完整的日志信息

    查看当前环境是否满足要求,输出结果如下图所示:

    (2)Oracle数据库OGG用户创建

    OGG需要有一个用户有权限对数据库的相关对象做操作,以下为涉及的权限,该示例将创建一个用户名和密码均为ogg的Oracle数据库用户并授予以下权限

    (3)源端OGG 管理进程(MGR)配置

    (4)源端OGG 表级补全日志(trandata)配置

    表级补全日志需要在最小补全日志打开的情况下才起作用,之前只在数据库级开启了最小补全日志(alter database add supplemental log data;),redolog记录的信息还不够全面,必须再使用add trandata开启表级的补全日志以获得必要的信息。

    (5)源端OGG 抽取进程(extract)配置

    Extract进程运行在数据库源端,负责从源端数据表或日志中捕获数据。Extract进程利用其内在的checkpoint机制,周期性地检查并记录其读写的位置,通常是写入到本地的trail文件。这种机制是为了保证如果Extract进程终止或者操作系统宕机,我们重启Extract进程后,GoldenGate能够恢复到以前的状态,从上一个断点处继续往下运行,而不会有任何数据损失。

    (6)源端OGG 传输进程(pump)配置

    pump进程运行在数据库源端,其作用非常简单。如果源端的Extract抽取进程使用了本地trail文件,那么pump进程就会把trail文件以数据块的形式通过TCP/IP协议发送到目标端,Pump进程本质上是Extract进程的一种特殊形式,如果不使用trail文件,那么Extract进程在抽取完数据后,直接投递到目标端。

    补充:pump进程启动时需要与目标端的mgr进程进行连接,所以需要优先将目标端的mgr提前配置好,否则会报错连接被拒绝,无法传输抽取的日志文件到目标端对应目录下

    (7)源端OGG 异构mapping文件(defgen)生成

    该文件记录了源库需要复制的表的表结构定义信息,在源库生成该文件后需要拷贝到目标库的dirdef目录,当目标库的replica进程将传输过来的数据apply到目标库时需要读写该文件,同构的数据库不需要进行该操作。

    2.目标端OGG配置

    (1)目标端MySQL数据库配置

    确认MySQL端表结构已经存在

    MySQL数据库OGG用户创建

    mysql> create user 'ogg'@'%' identified by 'ogg';

    mysql> grant all on *.* to 'ogg'@'%';

    #### 提前创建好ogg存放checkpoint表的数据库

    mysql> create database ogg;

    (2)目标端OGG 管理进程(MGR)配置

    目标端的MGR进程和源端配置一样,可直接将源端配置方式在目标端重复执行一次即可,该部分不在赘述

    (3)目标端OGG 检查点日志表(checkpoint)配置

    checkpoint表用来保障一个事务执行完成后,在MySQL数据库从有一张表记录当前的日志回放点,与MySQL复制记录binlog的GTID或position点类似。

    #### 切换至ogg软件目录并执行ggsci进入命令行终端

    shell> cd $OGG_HOME

    shell> ggsci

    ggsci> edit param ./GLOBALS

    checkpointtable ogg.ggs_checkpoint

    ggsci> dblogin sourcedb ogg@17X.1X.84.121:3306 userid ogg

    ggsci> add checkpointtable ogg.ggs_checkpoint

    (4)目标端OGG 回放线程(replicat)配置

    Replicat进程运行在目标端,是数据投递的最后一站,负责读取目标端Trail文件中的内容,并将解析其解析为DML语句,然后应用到目标数据库中。

    #### 切换至ogg软件目录并执行ggsci进入命令行终端

    shell> cd $OGG_HOME

    shell> ggsci

    #### 添加一个回放线程并与源端pump进程传输过来的trail文件关联,并使用checkpoint表确保数据不丢失

    ggsci> add replicat r_cms,exttrail /opt/ogg/dirdat/ms,checkpointtable ogg.ggs_checkpoint

    #### 增加/编辑回放进程配置文件

    ggsci> edit params r_cms

    replicat r_cms

    targetdb cms@17X.1X.84.121:3306,userid ogg,password ogg

    sourcedefs /opt/ogg/dirdef/cms.def

    discardfile /opt/ogg/dirrpt/r_cms.dsc,append,megabytes 1024

    HANDLECOLLISIONS

    MAP cms.*,target cms.*;

    注意:replicat进程只需配置完成,无需启动,待全量抽取完成后再启动。

    至此源端环境配置完成

    待全量数据抽取完毕后启动目标端回放进程即可完成数据准实时同步。

    3.全量同步配置

    全量数据同步为一次性操作,当OGG软件部署完成及增量抽取进程配置并启动后,可配置1个特殊的extract进程从表中抽取数据,将抽取的数据保存到目标端生成文件,目标端同时启动一个单次运行的replicat回放进程将数据解析并回放至目标数据库中。

    (1)源端OGG 全量抽取进程(extract)配置

    #### 切换至ogg软件目录并执行ggsci进入命令行终端

    shell> cd $OGG_HOME

    shell> ggsci

    #### 增加/编辑全量抽取进程配置文件

    #### 其中RMTFILE指定抽取的数据直接传送到远端对应目录下

    #### 注意:RMTFILE参数指定的文件只支持2位字符,如果超过replicat则无法识别

    ggsci> edit params ei_cms

    SOURCEISTABLE

    SETENV (NLS_LANG = "AMERICAN_AMERICA.AL32UTF8")

    SETENV (ORACLE_SID=cms)

    SETENV (ORACLE_HOME=/data/oracle/11.2/db_1)

    USERID ogg@appdb,PASSWORD ogg

    RMTHOST 17X.1X.84.121,MGRPORT 7809

    RMTFILE /opt/ogg/dirdat/ms,maxfiles 100,megabytes 1024,purge

    TABLE cms.*;

    #### 启动并查看抽取进程正常

    shell> nohup ./extract paramfile ./dirprm/ei_cms.prm reportfile ./dirrpt/ei_cms.rpt &

    ## 查看日志是否正常进行全量抽取

    shell> tail -f ./dirrpt/ei_cms.rpt

    (2)目标端OGG 全量回放进程(replicat)配置

    #### 切换至ogg软件目录并执行ggsci进入命令行终端

    shell> cd $OGG_HOME

    shell> ggsci

    ggsci> edit params ri_cms

    SPECIALRUN

    END RUNTIME

    TARGETDB cms@17X.1X.84.121:3306,USERID ogg,PASSWORD ogg

    EXTFILE /opt/ogg/dirdat/ms

    DISCARDFILE ./dirrpt/ri_cms.dsc,purge

    MAP cms.*,TARGET cms.*;

    #### 启动并查看回放进程正常

    shell> nohup ./replicat paramfile ./dirprm/ri_cms.prm reportfile ./dirrpt/ri_cms.rpt &

    #### 查看日志是否正常进行全量回放

    shell> tail -f ./dirrpt/ri_cms.rpt

    三、数据校验

    数据校验是数据迁移过程中必不可少的环节,本章节提供给几个数据校验的思路共大家参数,校验方式可以由以下几个角度去实现:

    1.通过OGG日志查看全量、增量过程中discards记录是否为0来判断是否丢失数据;

    2.通过对源端、目标端的表执行count判断数据量是否一致;

    3.编写类似于pt-table-checksum校验原理的程序,实现行级别一致性校验,这种方式优缺点特别明显,优点是能够完全准确对数据内容进行校验,缺点是需要遍历每一行数据,校验成本较高;

    4.相对折中的数据校验方式是通过业务角度,提前编写好数十个返回结果较快的SQL,从业务角度抽样校验。

    四、迁移问题处理

    本章节将讲述迁移过程中碰到的一些问题及相应的解决方式。

    (一)MySQL限制

    在Oracle到MySQL的表结构迁移过程中主要碰到以下两个限制:

    1. Oracle端的表结构因为最初设计不严谨,存在大量的列使用varchar(4000)数据类型,导致迁移到MySQL后超出行限制,表结构无法创建。由于MySQL本身数据结构的限制,一个16K的数据页最少要存储两行数据,因此单行数据不能超过65,535 bytes,因此针对这种情况有两种解决方式:

    根据实际存储数据的长度,对超长的varchar列进行收缩;

    对于无法收缩的列转换数据类型为text,但这在使用过程中可能导致一些性能问题;

    2. 与第一点类似,在Innodb存储引擎中,索引前缀长度限制是767 bytes,若使用DYNAMIC、COMPRESSED行格式且开启innodblargeprefix的场景下,这个限制是3072 bytes,即使用utf8mb4字符集时,最多只能对varchar(768)的列创建索引;

    3. 使用ogg全量初始化同步时,若存在外键约束,批量导入时由于各表的插入顺序不唯一,可能子表先插入数据而主表还未插入,导致报错子表依赖的记录不存在,因此建议数据迁移阶段禁用主外键约束,待迁移结束后再打开。

    mysql>set global foreign_key_checks=off;

    (二)全量与增量衔接

    HANDLECOLLISIONS参数是实现OGG全量数据与增量数据衔接的关键,其实现原理是在全量抽取前先开启增量抽取进程,抓去全量应用期间产生的redo log,当全量应用完成后,开启增量回放进程,应用全量期间的增量数据。使用该参数后增量回放DML语句时主要有以下场景及处理逻辑:

    目标端不存在delete语句的记录,忽略该问题并不记录到discardfile

    目标端丢失update记录

    - 更新的是主键值,update转换成insert

    - 更新的键值是非主键,忽略该问题并不记录到discardfile

    目标端重复insert已存在的主键值,这将被replicat进程转换为UPDATE现有主键值的行

    (三)OGG版本选择

    在OGG版本选择上我们也根据用户的场景多次更换了OGG版本,最初因为客户的Oracle 数据库版本为11.2.0.4,因此我们在选择OGG版本时优先选择使用了11版本,但是使用过程中发现,每次数据抽取生成的trail文件达到2G左右时,OGG报错连接中断,查看RMTFILE参数详细说明了解到trail文件默认限制为2G,后来我们替换OGG版本为12.3,使用MAXFILES参数控制生成多个指定大小的trail文件,回放时Replicat进程也能自动轮转读取Trail文件,最终解决该问题。但是如果不幸Oracle环境使用了Linux 5版本的系统,那么你的OGG需要再降一个小版本,最高只能使用OGG 12.2。

    (四)无主键表处理

    在迁移过程中还碰到一个比较难搞的问题就是当前Oracle端存在大量表没有主键。在MySQL中的表没有主键这几乎是不被允许的,因为很容易导致性能问题和主从延迟。同时在OGG迁移过程中表没有主键也会产生一些隐患,比如对于没有主键的表,OGG默认是将这个一行数据中所有的列拼凑起来作为唯一键,但实际还是可能存在重复数据导致数据同步异常,Oracle官方对此也提供了一个解决方案,通过对无主键表添加GUID列来作为行唯一标示,具体操作方式可以搜索MOS文档ID 1271578.1进行查看。

    (五)OGG安全规则

    报错信息

    2019-03-08 06:15:22  ERROR   OGG-01201  Error reported by MGR : Access denied.

    错误信息含义源端报错表示为该抽取进程需要和目标端的mgr进程通讯,但是被拒绝,具体操作为:源端的extract进程需要与目标端mgr进行沟通,远程将目标的replicat进行启动,由于安全性现在而被拒绝连接。

    报错原因

    在Oracle OGG 11版本后,增加了新特性安全性要求,如果需要远程启动目标端的replicat进程,需要在mgr节点增加访问控制参数允许远程调用

    解决办法

    在源端和目标端的mgr节点上分别增加访问控制规则并重启

    ## 表示该mgr节点允许(ALLOW)10.186网段(IPADDR)的所有类型程序(PROG *)进行连接访问ACCESSRULE, PROG *, IPADDR 10.186.*.*, ALLOW

    (六)数据抽取方式

    报错信息

    2019-03-15 14:49:04  ERROR   OGG-01192  Trying to use RMTTASK on data types which may be written as LOB chunks (Table: 'UNIONPAYCMS.CMS_OT_CONTENT_RTF').

    报错原因

    根据官方文档说明,当前直接通过Oracle数据库抽取数据写到MySQL这种initial-load方式,不支持LOBs数据类型,而表 UNIONPAYCMS.CMSOTCONTENT_RTF 则包含了CLOB字段,无法进行传输,并且该方式不支持超过4k的字段数据类型

    解决方法

    将抽取进程中的RMTTASK改为RMTFILE参数 官方建议将数据先抽取成文件,再基于文件数据解析进行初始化导入

    展开全文
  • 在建站过程中,我们常常需要在SQL数据库中创建数据库,并在数据库中导入数据,那么我们该如何在phpMyAdmin中创建数据库又怎么导入SQL数据文件呢? 在phpMyAdmin界面,点击需要导入的数据库,要导入数据,需要在phpMyAdmin...
  • SQL Server 2008中导入SQL Server 2005很方便,高版本是可以向低版本兼容的,那么我们如何在SQL Server 2005数据库中导入SQL Server 2008的数据呢?下面我们来探讨下:
  • php中如何将execl的数据导入数据库中1.使用PHPExcel Parser Pro,但是这个软件为收费软件;2.可EXCEL表保存为CSV,然后通过phpmyadmin或者SQLyog导入,SQLyog导入的方法为:·将EXCEL表另存为CSV形式;·打开...
  • 其实,SQL Server集成了很多成批导入数据的方法。有些项目实施顾问头疼的问题,我们数据库管理员眼中,是小菜一碟。现在的重点就是,如何让用户了解这些方法,让数据导入变得轻松一些。  第一:使用Select ...
  • 其实,SQL Server集成了很多成批导入数据的方法。有些项目实施顾问头疼的问题,我们数据库管理员眼中,是小菜一碟。现在的重点就是,如何让用户了解这些方法,让数据导入变得轻松一些。相信以下方法大家都用过...
  • {"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户的数据库应用系统进行性能和风险评估,参与配合进行数据压测演练,...
  • 一、数据导入的方式向MySQL数据库导入数据,通常有两种办法,第一种是利用SOURCE命令,第二种是使用LOAD DATA命令。SOURCE命令是通过执行SQL文件的INSERT语句来实现数据的导入。正常情况下,如果我们向单节点的...
  • 介绍C++Builder中如何数据库中数据导入到Excel以及如何把图表导入到WORD中
  • 软件项目实施的时候,数据导入一直是...其实,SQL Server集成了很多成批导入数据的方法。有些项目实施顾问头疼的问题,我们数据库管理员眼中,是小菜一碟。现在的重点就是,如何让用户了解这些方法,让数...
  • 1)打开你的sql server,找到要导入数据数据库,右键——〉任务——〉导入数据 2)按照图示选择要导入的excel 3)选择导入到哪个数据库
  • SQL SERVER 和EXCEL的数据导入导出 1、SQL SERVER里查询Excel数据: -- ====================================================== SELECT *  FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source=...
  • //Sheet(术语:工作表)就是Excel表格左下角的Sheet1,Sheet2,Sheet3但程序 //Sheet的下标是从0开始的 //获取第一张Sheet表 Sheet rs = rwb.getSheet(0); //获取Sheet表所包含的总列数 int rsColumns = rs....
  • 如何配置文件在上一节已经介绍,此处不再赘述。 database加入user.json文件 引用: Compass可视化工具刷新一下,就会找user文档。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,182
精华内容 1,272
关键字:

在数据库中如何导入数据