iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >细致入微:如何使用数据泵导出表的部分列数据
  • 921
分享到

细致入微:如何使用数据泵导出表的部分列数据

2024-04-02 19:04:59 921人浏览 独家记忆
摘要

编者按云和恩墨大讲堂社群(本文底部有入群方式)里有人提出一个需求:一张表数据量很大,如何只导出其中一部分列?云和恩墨CTO、oracle ACE总监、ACOUG核心专家杨廷琨老师使用了数据泵的方式,细致入微

编者按

云和恩墨大讲堂社群(本文底部有入群方式)里有人提出一个需求:一张表数据量很大,如何只导出其中一部分列?云和恩墨CTO、oracle ACE总监、ACOUG核心专家杨廷琨老师使用了数据泵的方式,细致入微地解释了过程并给出具体的代码实现。数据和云(ID:OraNews)独家发布,以飨读者。

以下为正文

无论是老版本exp还是数据泵expdp,Oracle都提供了QUERY的功能,这使得查询表中部分记录的功能可以实现,但是QUERY只能过滤行,而不能过滤列,Oracle数据泵会读取表中全部列的。

在12c中,Oracle为数据泵提供了VIEW功能,使得导出的时候可以根据视图的定义来导出表中的数据:

sql>select banner from v$version; 
BANNER--------------------------------------------------------------------------------
OracleDatabase 18c Enterprise Edition Release 18.0.0.0.0 - Production 
SQL>CREATE TABLE T_TABLES AS SELECT * FROM ALL_TABLES;

 (左右滑动查看代码部分,下同)

表已创建。

SQL>create view v_tables as select owner, table_name, tablespace_name from t_tableswhere owner not in ('SYS');

 视图已创建。

利用数据泵的VIEWS_AS_TABLES参数可以直接导出视图对应的表数据:

C:\Users\yangt>expdpC##u1 directory=d_output dumpfile=t_tab_view views_as_tables=v_tables 

Export:Release 18.0.0.0.0 - Production on 星期二 2月 26 13:37:312019

Version18.3.0.0.0

Copyright(c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.

口令:连接到: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 -Production

警告: 连接到容器数据库的根或种子时通常不需要 Oracle Data Pump 操作。

启动 "C##U1"."SYS_EXPORT_TABLE_01":  c##u1/******** 
directory=d_outputdumpfile=t_tab_view views_as_tables=v_tables
处理对象类型 TABLE_EXPORT/VIEWS_AS_TABLES/TABLE_DATA
处理对象类型 TABLE_EXPORT/VIEWS_AS_TABLES/TABLE
. . 导出了"C##U1"."V_TABLES"                          
8.289 KB      71 行
已成功加载/卸载了主表"C##U1"."SYS_EXPORT_TABLE_01"
******************************************************************************
C##U1.SYS_EXPORT_TABLE_01的转储文件集为: 
D:\TEMP\T_TAB_VIEW.DMP
作业 "C##U1"."SYS_EXPORT_TABLE_01" 已于 星期二 2月 26 13:37:40 2019 elapsed 0 00:00:06 成功完成

虽然是通过视图导出的,但是数据泵把它当作一个表来处理,因此这个dump文件是可以直接导入到数据库中变成表的:

SQL>drop view v_tables;

视图已删除。

完成导入操作:

C:\Users\yangt>impdpc##u1 directory=d_output dumpfile=t_tab_view full=y 
Import:Release 18.0.0.0.0 - Production on 星期二 2月 26 14:33:022019
Version18.3.0.0.0 Copyright(c) 1982, 2018, Oracle and/or its affiliates. 
All rights reserved.
口令: 
连接到: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 -Production

警告: 连接到容器数据库的根或种子时通常不需要 Oracle Data Pump 操作。

已成功加载/卸载了主表"C##U1"."SYS_IMPORT_FULL_01"
启动 "C##U1"."SYS_IMPORT_FULL_01":  c##u1/******** directory=d_outputdumpfile=t_tab_view full=y
处理对象类型 TABLE_EXPORT/VIEWS_AS_TABLES/TABLE处理对象类型 TABLE_EXPORT/VIEWS_AS_TABLES/TABLE_DATA
. . 导入了"C##U1"."V_TABLES"                          
8.289 KB      71 行
作业 "C##U1"."SYS_IMPORT_FULL_01" 已于 星期二 2月 26 14:33:07 2019 elapsed 0 00:00:02 成功完成

查询表数据:

SQL>select count(*) from v_tables;
   
COUNT(*)
----------        
71 
SQL>select table_name, tablespace_name from user_tables where table_name ='V_TABLES'; 
TABLE_NAME                     
TABLESPACE_NAME------------------------------------------------------------
V_TABLES                       USERS

这个功能是12c的特新特,如果是12c之前的版本,可以考虑使用ORACLE_DATAPUMP类型的外部表来实现:

SQL>create table t_external_tables (owner, table_name, tablespace_name)organization external  
2 (type oracle_datapump  
3 default directory d_output  
4 location ('external_table.dp'))  
5  asselect owner, table_name, tablespace_name from t_tables where owner not in('SYS');

表已创建。

通过将外部表导出的 external_table.dp 文件拷贝到目标环境对应的目录下,根据上面的定义重建外部表,注意目标环境创建过程由于已经拷贝了导出的数据,因此语法截至到 location 语句就结束了,不要再包含 as select 部分。

SQL>create table t_target_ext_tab (owner varchar2(30), table_name varchar2(128),tablespace_name varchar2(30))  
2 organization external  
3 (type oracle_datapump  
4 default directory d_output  5 location ('external_table.dp'));

表已创建。

SQL>select count(*) from t_target_ext_tab;   
COUNT(*)----------        
71 
SQL>col table_name for a30SQL>select * from t_target_ext_tab where owner = 'SYSTEM'; 
OWNER                          TABLE_NAME                     TABLESPACE_NAME
------------------------------------------------------------ ------------------------------
SYSTEM                         OL$SYSTEM                         OL$HINTS
SYSTEM                         OL$nodeS
SYSTEM                         HELP                    
       SYSTEM

所以对于11g和10g的版本,也可以不通过新建表,然后拷贝数据的方式来实现数据的导出和转移。但是如果是9i及以前的版本,那么要不然通过建表然后exp导出的方式,要不然自己写程序实现数据的导出吧。

您可能感兴趣的文档:

--结束END--

本文标题: 细致入微:如何使用数据泵导出表的部分列数据

本文链接: https://www.lsjlt.com/news/48474.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 细致入微:如何使用数据泵导出表的部分列数据
    编者按云和恩墨大讲堂社群(本文底部有入群方式)里有人提出一个需求:一张表数据量很大,如何只导出其中一部分列?云和恩墨CTO、Oracle ACE总监、ACOUG核心专家杨廷琨老师使用了数据泵的方式,细致入微...
    99+
    2024-04-02
  • ORACLE 数据泵如何导入导出数据
    这篇文章给大家分享的是有关ORACLE 数据泵如何导入导出数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、摘要在平常备库和数据库迁移的时候,当遇到大的数据库的时候在用exp...
    99+
    2024-04-02
  • oracle数据泵如何导入指定表
    要导入指定表,你可以使用Oracle数据泵工具的impdp命令。以下是一个示例: impdp username/password@d...
    99+
    2024-04-15
    oracle
  • PHPcms列表页数据导入与导出方法分享
    PHPcms是一个非常流行的内容管理系统,用户可以使用它来创建和管理网站上的页面、文章、图片等内容。在使用PHPcms的过程中,有时候我们需要将列表页的数据进行导入和导出,以便于备份、...
    99+
    2024-03-14
    php cms 数据导入 csv文件
  • 使用HeidiSQL如何导入导出MySQL数据
    本篇文章为大家展示了使用HeidiSQL如何导入导出MySQL数据,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。①首先,选择你要导出的数据库,点击鼠标右键:如下图所...
    99+
    2024-04-02
  • Oracle expdp导出多表或表中的部分数据
    环境:Oracle database 11gR2,  RHEL 5.4...
    99+
    2023-06-06
  • 如何使用Oracle实现数据导入和导出
    要使用Oracle实现数据导入和导出,可以使用以下方法: 数据导入: 使用Oracle SQL Developer工具:可以通过O...
    99+
    2024-03-02
    Oracle
  • 如何处理记账系统的数据导入和导出 - 解释如何导入和导出记账数据
    导入和导出记账数据是许多记账系统中常见的需求。这些操作可以使用户方便地将数据从外部系统导入到记账系统中,或者将记账系统中的数据导出到其他系统中进行进一步分析或保存。本文将介绍如何处理记账系统的数据导入和导出问题,并给出相应的代码示例。一、数...
    99+
    2023-10-21
  • 如何使用批处理实现MySQL数据导入导出
    这篇文章主要为大家展示了“如何使用批处理实现MySQL数据导入导出”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用批处理实现MySQL数据导入导出”这篇文...
    99+
    2024-04-02
  • C#如何使用NPOI对Excel数据进行导入导出
    本篇内容介绍了“C#如何使用NPOI对Excel数据进行导入导出”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、概述NPOI 是 POI ...
    99+
    2023-07-02
  • sqlserver如何导出单个表的数据
    在SQL Server中,可以使用以下方法导出单个表的数据: 使用SQL Server Management Studio (S...
    99+
    2024-04-09
    sqlserver
  • oracle如何导出某张表的数据
    在Oracle数据库中,可以使用以下方法导出某张表的数据: 使用SQL Developer工具导出数据: 打开SQL Deve...
    99+
    2024-04-23
    oracle
  • oracle如何导出一张表的数据
    在Oracle数据库中,可以使用SQL*Plus工具或者Oracle SQL Developer工具导出一张表的数据。以下是两种方法...
    99+
    2024-04-02
  • MySQL如何导出单个表的数据
    使用MySQL命令行工具可以导出单个表的数据,具体步骤如下: 打开命令行工具,输入以下命令连接到MySQL数据库: mysql ...
    99+
    2024-05-13
    mysql
  • 如何使用MongoDB实现数据的批量导入、导出功能
    如何使用MongoDB实现数据的批量导入、导出功能MongoDB是一种NoSQL数据库,作为一种非关系型数据库,其在数据存储和查询上有着很大的灵活性和性能优势。对于需要批量导入和导出数据的应用场景,MongoDB也提供了相应的工具和接口。本...
    99+
    2023-10-22
    MongoDB 导出 批量导入
  • php如何导出数据库的数据并转为excel表格
    本文小编为大家详细介绍“php如何导出数据库的数据并转为excel表格”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何导出数据库的数据并转为excel表格”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一...
    99+
    2023-07-05
  • 如何导出一个数据库中表的某一条数据
    小编给大家分享一下如何导出一个数据库中表的某一条数据,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!mysqldump -uroot -p123456 mete...
    99+
    2024-04-02
  • oracle中如何使用sqlldr导入数据
    小编给大家分享一下oracle中如何使用sqlldr导入数据,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!背景900W数据的TX...
    99+
    2024-04-02
  • 如何使用mysqlimport导入数据到mysql
    这篇文章将为大家详细讲解有关如何使用mysqlimport导入数据到mysql,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、准备导入数据[root@D2-LZY245...
    99+
    2024-04-02
  • mysql如何利用Navicat导出和导入数据库的方法
    MySql是我们经常用到的数据,无论是开发人员用来练习,还是小型私服游戏服务器,或者是个人软件使用,都十分方便。对于做一些个人辅助软件,选择mysql数据库是个明智的选择,有一个好的工具更是事半功倍,对于M...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作