Oracle 将一个库的数据导入到另一个库

本文介绍了如何将Oracle数据库中2011年1月1日至5月1日的特定活动数据迁移到新库,并确保不覆盖线上已存在数据。涉及步骤包括建立数据库链接、数据验证、字段类型转换以及使用SQL语句进行数据迁移。同时,分享了Oracle常用SQL语句,如获取当前时间、更改字段类型和创建索引等。

最新更新2011-9-28号。

最近的项目中遇到了一个棘手的问题,由于许多业务都是放在定时中执行,有一个需求是统计商户或者门店创建的活动效果,在近期的3.5版本做了很大调整,因此在新的统计方式需要兼容历史活动,所以得把所有的活动遍历统计一次。考虑到

上线当天晚上定时会跑得很慢,所以上级决定目前只将2011年5月1号之后创建的活动和5月1号前创建并且上线时仍有更新的活动。5月1号之前的活动等上线后,在一个新库中将数据跑出来,然后导入到线上库。如果线上库已经存在的数据,就不能导入。因为以线上环境的数据为准。今天将2011年1月1号到5月1号之间的活动数据在新库上跑出来了,线上已经存在的数据,是5月1号前创建并且在8月18号上线新版本后仍有更新的活动,这一部分数据不能覆盖,以线上的为准。

 

 

先建立链接,连接到线上的数据库服务器,具体操作如图所示,别名ntow,然后输入用户名,密码

 

在完成这个任务时,做了数据验证。

将一个数据库上的analysis_invest_profit_store表中的数据导入
--到线上数据库的analysis_invest_profit_store表中。要求:线上已经存在
--的数据不可覆盖。 表analysis_invest_profit_store主键
--是marketingid,coupontypeid和storeid组合的主键

-- analysis_invest_profit_store@ntow t 表示线上库
   
--1)第一步,找出线上与本地数据库相同的数据   执行结果为49条     
  select s.*
    from analysis_invest_profit_store      s,
         analysis_invest_profit_store@ntow t
   where s.marketingid = t.marketingid
     and s.coupontypeid = t.coupontypeid
     and s.storeid = t.storeid;
           
     
  --2)找出线上库不存在的数据 
  -- 此语句执行结果是451条 
  --本地新库中analysis_invest_profit_store表中一共有500条,验证数据不缺少
     select s.*
  from analysis_invest_profit_store s
 where not exists (select *
          from analysis_invest_profit_store@ntow t
         where s.marketingid = t.marketingid
           and s.coupontypeid = t.coupontypeid
           and s.store
### 达梦数据数据迁移方法 在达梦数据中,将当前数据导入到一个数据(跨数据迁移)可以通过以下几种方法实现。以下是详细的说明: #### 方法一:使用导出和导入工具 达梦数据支持将数据导出为多种外部文件格式(如 `.xlsx`、`.csv`、`.txt`、`.xml`、`.html`、`.json`、`.sql` 等),然后通过目标数据导入工具完成数据迁移[^1]。 - **导出数据**: 使用达梦数据提供的工具或 SQL 语句将数据导出为文件。 ```sql SELECT * FROM 源 INTO OUTFILE '路径/文件名.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'; ``` - **导入数据**: 在目标数据中,使用相应的导入工具或 SQL 语句将文件中的数据加载到目标中。 ```sql LOAD DATA INFILE '路径/文件名.csv' INTO TABLE 目标 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'; ``` 这种方法适用于不同数据系统之间的数据迁移,尤其是当源数据和目标数据不支持直接连接时。 #### 方法二:使用 `INSERT INTO` 跨插入 如果源数据和目标数据位于同一服务器或可以通过链接服务器访问,则可以使用 `INSERT INTO` 语句实现跨数据迁移。 ```sql INSERT INTO 目标数据.目标 (列1, 列2, 列3) SELECT 列1, 列2, 列3 FROM 源数据.源; ``` 这种方法要求源数据和目标数据之间有直接的连接能力,并且字段类型和数量需要匹配[^2]。 #### 方法三:使用达梦数据数据迁移工具 达梦数据提供了专门的数据迁移工具,用于将数据从其他数据迁移到达梦数据,或者从达梦数据迁移到其他数据。例如,在将达梦数据中的数据迁移到 Oracle 数据时,需要注意以下事项[^3]: - 如果目标数据Oracle,且名或字段名区分大小写,则需要在迁移过程中正确处理对象名的大小写问题。可以通过取消勾选“保持对象名大小写”选项来避免在 Oracle 中使用双引号的问题。 - 迁移前,确保目标数据结构与源数据兼容。如果不兼容,可能需要手动调整目标的定义。 #### 方法四:使用统计信息导出和导入 对于大规模数据迁移,特别是涉及 OLAP 业务系统的场景,可以通过提前收集统计信息并导出/导入的方式来优化性能。具体步骤包括: 1. 提前收集源数据的统计信息。 2. 将统计信息导出为文件。 3. 在目标数据导入统计信息文件,以减少迁移后的性能调优时间。 这种方法特别适用于对性能要求较高的场景,能够显著缩短迁移窗口时间。 #### 方法五:使用第三方ETL工具 除了达梦数据自带的工具外,还可以借助第三方 ETL 工具(如 Informatica、Talend、DataStage 等)实现跨数据迁移。这些工具通常提供图形化界面,简化了复杂的数据转换和迁移过程。 --- ### 注意事项 - 在进行大规模数据迁移时,建议分批次处理数据,以避免内存不足或网络拥塞等问题。 - 确保源数据和目标数据之间的网络连接稳定,尤其是在跨服务器操作时。 - 迁移前后,务必验证数据的一致性和完整性,以防止因字段类型不匹配或其他原因导致的数据丢失或错误。 --- ### 示例代码 以下是一个完整的示例,展示如何通过导出和导入方式实现跨数据迁移: ```sql -- 导出数据为 CSV 文件 SELECT * FROM 源 INTO OUTFILE '/tmp/data.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'; -- 在目标数据导入数据 LOAD DATA INFILE '/tmp/data.csv' INTO TABLE 目标 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'; ``` ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值