返回顶部
首页 > 资讯 > 数据库 >数据库中如何导入一张18亿条300G数据文件的表
  • 356
分享到

数据库中如何导入一张18亿条300G数据文件的表

2024-04-02 19:04:59 356人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关数据库中如何导入一张18亿条300G数据文件的表,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 1.问题:需要导入

这篇文章将为大家详细讲解有关数据库中如何导入一张18亿条300G数据文件的表,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1.问题:需要导入一张18亿数据的300G大的数据文件

2. 客户给了一个用imp导出的数据文件。包含了一个表xx。这个表的结构如下:

点击(此处)折叠或打开

  1. CREATE TABLE "username"."xx"

  2.    (    "DTLCARDNO" CHAR(16) NOT NULL ENABLE,

  3.     "DTLCITY" NUMBER(4,0),

  4.     "DTLCDCNT" NUMBER(6,0) NOT NULL ENABLE,

  5.     "DTLTXNCODE" NUMBER(4,0) NOT NULL ENABLE,

  6.     "DTLINNTYPE" NUMBER(4,0),

  7.     "DTLPOSID" VARCHAR2(12),

  8.     "DTLSAMID" VARCHAR2(16),

  9.     "DTLPOSSEQ" NUMBER(10,0),

  10.     "DTLDATE" NUMBER(8,0),

  11.     "DTLTIME" NUMBER(6,0) NOT NULL ENABLE,

  12.     "DTLSETTDATE" NUMBER(8,0),

  13.     "DTLCENSEQ" NUMBER(10,0),

  14.     "DTLAMT" NUMBER(9,0) NOT NULL ENABLE,

  15.     "DTLSLAMT" NUMBER(9,0),

  16.     "DTLBEFBAL" NUMBER(9,0) NOT NULL ENABLE,

  17.     "DTLAFTBAL" NUMBER(9,0),

  18.     "DTLSTATID" NUMBER(9,0),

  19.     "DTLERRCODE" NUMBER(6,0),

  20.     "DTLINNERR" NUMBER(6,0),

  21.     "DTLRSVD" VARCHAR2(10),

  22.     "DTLPKGID" NUMBER(10,0),

  23.     "DTLUNITID" NUMBER(8,0),

  24.     "DTLCRDTYPE" NUMBER(4,0),

  25.     "DTLTAC" CHAR(8),

  26.     "PARTFLAG" NUMBER(3,0) NOT NULL ENABLE

  27.    ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255  LOGGING

  28.   STORAGE(

  29.   BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  30.   TABLESPACE "CRDDTL01_TS"

  31.   PARTITioN BY RANGE ("PARTFLAG")

  32.  (PARTITION "P_JY001" VALUES LESS THAN (1)

  33.   PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255

  34.   STORAGE(INITIAL 797966336 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  35.   PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  36.   TABLESPACE "CRDDTL01_TS" NOCOMPRESS ,

  37.  PARTITION "P_JY002" VALUES LESS THAN (2)

  38.   PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255

  39.   STORAGE(INITIAL 751828992 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  40.   PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  41.   TABLESPACE "CRDDTL01_TS" NOCOMPRESS ,

  42.  PARTITION "P_JY003" VALUES LESS THAN (3)

  43.   PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255

  44.   STORAGE(INITIAL 829423616 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  45.   PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  46.   TABLESPACE "CRDDTL01_TS" NOCOMPRESS ,

  47.  PARTITION "P_JY004" VALUES LESS THAN (4)

  48.   PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255

  49.   STORAGE(INITIAL 886046720 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  50.   PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  51.   TABLESPACE "CRDDTL01_TS" NOCOMPRESS ,

  52.  PARTITION "P_JY005" VALUES LESS THAN (5)

  53.   PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255

  54.   STORAGE(INITIAL 901775360 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  55.   PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  56.   TABLESPACE "CRDDTL01_TS" NOCOMPRESS ,

  57.  PARTITION "P_JY006" VALUES LESS THAN (6)

  58.   PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255

  59.   STORAGE(INITIAL 826277888 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  60.   PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  61.   TABLESPACE "CRDDTL01_TS" NOCOMPRESS ,

  62.  PARTITION "P_JY007" VALUES LESS THAN (7)

  63.   PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255

  64.   STORAGE(INITIAL 803209216 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  65.   PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  66.   TABLESPACE "CRDDTL01_TS" NOCOMPRESS ,

  67.  PARTITION "P_JY008" VALUES LESS THAN (8)

  68.   PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255

  69.   STORAGE(INITIAL 961544192 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  70.   PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  71.   TABLESPACE "CRDDTL01_TS" NOCOMPRESS ,

  72.  PARTITION "P_JY009" VALUES LESS THAN (9)

  73.   PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255

  74.   STORAGE(INITIAL 995098624 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  75.   PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  76.   TABLESPACE "CRDDTL01_TS" NOCOMPRESS ,

  77.  PARTITION "P_JY010" VALUES LESS THAN (10)

  78.   PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255

  79.   STORAGE(INITIAL 972029952 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  80.   PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  81.   TABLESPACE "CRDDTL01_TS" NOCOMPRESS , 

  82. 。。。。。。。。。。。。。。

  83. 类似的有360个分区



可以看到是个分区表。
导入语句

点击(此处)折叠或打开

  1. echo %time% ;

  2. imp system/manager@orcl  file=E:\yikatong\tlcarddtltb.dmp fromuser=u1 touser=u1 ignore=y log=E:\yikatong\tlcarddtltb.dmp.log indexes=N  RECORDLENGTH=65535 buffer=502400000 commit=n feedback=10000000

  3. echo %time% ;

要求1千万行响应一次,提交为N,不插入索引。buffer设置为500M

3.开始导入。因为客户也没有提供数据文件的大小,只提供了需要新建的表空间。我新建了如下可以自增的表空间。
create tablespace crddtl01_ts datafile 'D:/oracle/tablespace/crddtl01_ts.dbf' size 8024m autoextend on next 1024m autoallocate;

每次自增1024M。考虑到数据比较大,每次自增太小,花费时间小。接着开始导入了。等待了几个小时以后,报错:
01659, 00000, "unable to allocate MINEXTENTS beyond %s in tablespace %s"
// *Cause:  Failed to find sufficient contiguous space to allocate MINEXTENTS
//          for the segment being created.
// *Action: Use ALTER TABLESPACE ADD DATAFILE to add additional space to the
//          tablespace or retry with smaller value for MINEXTENTS, NEXT or
//          PCTINCREASE
.刚开始有点蒙。我建立表空间都是自增长的。难道不能自增长。查询下可以增长的。看看表空间大小32G。原来oracle普通表空间文件最大为32G。然后开始给每个表空间增加4个文件。sql如下:

点击(此处)折叠或打开

  1. create tablespace crddtl01_ts datafile 'D:/oracle/tablespace/crddtl01_ts.dbf' size 8024m autoextend on next 1024m autoallocate;

  2. create tablespace crddtlidx01_ts datafile 'd:/oracle/tablespace/crddtlidx01_ts.dbf' size 5024m autoextend on next 1024m autoallocate;

  3. alter tablespace crddtl01_ts add datafile 'D:/oracle/tablespace/crddtl01a_ts.dbf' size 1024m autoextend on next 1024m ;

  4. alter tablespace crddtl01_ts add datafile 'D:/oracle/tablespace/crddtl01b_ts.dbf' size 1024m autoextend on next 1024m ;

  5. create tablespace crddtl02_ts datafile 'E:/oracle_data/crddtl02_ts.dbf' size 8024m autoextend on next 1024m autoallocate;


  6. alter tablespace crddtl02_ts add datafile 'E:/oracle_data/crddtl02a_ts.dbf' size 1024m autoextend on next 1024m ;

  7. alter tablespace crddtl02_ts add datafile 'E:/oracle_data/crddtl02b_ts.dbf' size 1024m autoextend on next 1024m ;


  8. create tablespace crddtlidx02_ts datafile 'E:/oracle_data/crddtlidx02_ts.dbf' size 5024m autoextend on next 1024m autoallocate;


  9. create tablespace crddtl03_ts datafile 'F:/oracleData/crddtl03_ts.dbf' size 8024m autoextend on next 1024m autoallocate;

  10. alter tablespace crddtl03_ts add datafile 'F:/oracleData/crddtl03a_ts.dbf' size 1024m autoextend on next 1024m;

  11. alter tablespace crddtl03_ts add datafile 'F:/oracleData/crddtl03b_ts.dbf' size 1024m autoextend on next 1024m;


  12. create tablespace crddtlidx03_ts datafile 'F:/oracleData/crddtlidx03_ts.dbf' size 5024m autoextend on next 1024m autoallocate;


  13. create tablespace crddtl04_ts datafile 'D:/oracle/tablespace/crddtl04_ts.dbf' size 8024m autoextend on next 1024m autoallocate;

  14. alter tablespace crddtl04_ts add datafile 'D:/oracle/tablespace/crddtl04a_ts.dbf' size 1024m autoextend on next 1024m ;

  15. alter tablespace crddtl04_ts add datafile 'D:/oracle/tablespace/crddtl04b_ts.dbf' size 1024m autoextend on next 1024m ;

于是接下来就开始了漫长的等待。
4.怎么知道导入了多少数据?导入进展到什么情况了呢?或者说导入进程有没有卡住,僵死呢?
第一看feedback.我在导入程序设置了参数feedback=10000000,每导入1千万数据,响应一个黑点。
第二可以看导入日志。每导入完一个分区,它会在日志插入一条记录。
第三打开资源管理器,我们看看imp进程,占用的cpu,硬盘,网络,内存资源。
数据库中如何导入一张18亿条300G数据文件的表
但是这个服务器当时点什么都很慢。我分配一个8G的文件,花费了10几分钟。这个怎么解释呢?
5.经过漫长的等待,我花了2天7个小时,把这个18亿数据导入进去了。。
最后看看数据文件大小:

点击(此处)折叠或打开

  1. 目录                                   大小(M)tablespace

  2. D:\ORACLE\TABLESPACE\CRDDTL01A_TS.DBF  32767 CRDDTL01_TS

  3. D:\ORACLE\TABLESPACE\CRDDTL01_TS.DBF 32767 CRDDTL01_TS

  4. D:\ORACLE\TABLESPACE\CRDDTL01B_TS.DBF 32767 CRDDTL01_TS

  5. F:\ORACLEDATA\CRDDTL01D_TS.DBF 25600 CRDDTL01_TS

  6. E:\ORACLE_DATA\CRDDTL02C_TS.DBF 9216 CRDDTL02_TS

  7. E:\ORACLE_DATA\CRDDTL02D_TS.DBF 8192 CRDDTL02_TS

  8. E:\ORACLE_DATA\CRDDTL02B_TS.DBF 32767 CRDDTL02_TS

  9. E:\ORACLE_DATA\CRDDTL02_TS.DBF 32767 CRDDTL02_TS

  10. E:\ORACLE_DATA\CRDDTL02A_TS.DBF 30720 CRDDTL02_TS

  11. F:\ORACLEDATA\CRDDTL03D_TS.DBF 5120 CRDDTL03_TS

  12. F:\ORACLEDATA\CRDDTL03B_TS.DBF 28672 CRDDTL03_TS

  13. F:\ORACLEDATA\CRDDTL03_TS.DBF 32600 CRDDTL03_TS

  14. F:\ORACLEDATA\CRDDTL03A_TS.DBF 27648 CRDDTL03_TS

  15. F:\ORACLEDATA\CRDDTL03C_TS.DBF 5120 CRDDTL03_TS

  16. D:\ORACLE\TABLESPACE\CRDDTL04A_TS.DBF 28672 CRDDTL04_TS

  17. D:\ORACLE\TABLESPACE\CRDDTL04B_TS.DBF 32767 CRDDTL04_TS

  18. E:\ORACLE_DATA\CRDDTL04D_TS.DBF 7168 CRDDTL04_TS

  19. E:\ORACLE_DATA\CRDDTL04C_TS.DBF 7168 CRDDTL04_TS

  20. D:\ORACLE\TABLESPACE\CRDDTL04_TS.DBF 32767 CRDDTL04_TS

一个表空间有4个文件,几乎达到120G

关于“数据库中如何导入一张18亿条300G数据文件的表”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: 数据库中如何导入一张18亿条300G数据文件的表

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

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

猜你喜欢
  • 数据库中如何导入一张18亿条300G数据文件的表
    这篇文章将为大家详细讲解有关数据库中如何导入一张18亿条300G数据文件的表,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 1.问题:需要导入...
    99+
    2024-04-02
  • 如何导出一个数据库中表的某一条数据
    小编给大家分享一下如何导出一个数据库中表的某一条数据,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!mysqldump -uroot -p123456 mete...
    99+
    2024-04-02
  • 数据库中如何一条语句删除多张表
    这篇文章主要介绍数据库中如何一条语句删除多张表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 第一种方法:SCOTT@PR...
    99+
    2024-04-02
  • oracle如何导出一张表的数据
    在Oracle数据库中,可以使用SQL*Plus工具或者Oracle SQL Developer工具导出一张表的数据。以下是两种方法...
    99+
    2024-04-02
  • mysql中怎么用dump导入一张表数据
    要使用dump导入一张表数据,可以按照以下步骤操作: 使用mysqldump命令导出表数据到一个.sql文件中。假设要导出表名为t...
    99+
    2024-04-09
    mysql
  • sql文件如何导入数据库
    sql文件如何导入数据库?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!sql文件导入数据库的方法有两种,一种是用cmd的调...
    99+
    2024-04-02
  • mdf文件如何导入数据库
    这篇文章主要讲解了“mdf文件如何导入数据库”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mdf文件如何导入数据库”吧! mdf文件导入数据库文件方法: ...
    99+
    2024-04-02
  • mdb文件如何导入数据库
    要将MDB文件导入数据库,你可以尝试以下几种方法:1. 使用Microsoft Access软件:打开Microsoft Acces...
    99+
    2023-09-26
    mdb 数据库
  • sql如何导入数据库文件
    SQL可以通过以下几种方式导入数据库文件:1. 使用命令行工具导入:可以使用命令行工具如MySQL命令行、PostgreSQL命令行...
    99+
    2023-09-29
    sql 数据库
  • navicat如何导入数据库文件
    要导入数据库文件到Navicat中,可以按照以下步骤操作: 打开Navicat软件,并连接到您的数据库服务器。 在连接成功后,选择...
    99+
    2024-03-01
    navicat 数据库
  • 数据库将一张表中的数据更新到另一张表(Oracle、MySQL)
    Oracle数据库         方式一(推荐) -- 将 t2表的字段更新到t1表MERGE INTO COMMUNITY_MEMBER_APPLY_DIE T1USING COMMUNITY_MEMBER T2ON (T1.MEMB...
    99+
    2023-09-14
    数据库 oracle mysql
  • 如何将数据表导入phpmyadmin数据库
    小编给大家分享一下如何将数据表导入phpmyadmin数据库,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!导入数据表:先选择数据...
    99+
    2024-04-02
  • txt文件如何导入mysql数据库
    本篇文章给大家分享的是有关txt文件如何导入mysql数据库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。txt文件如何导入mysql数据库1...
    99+
    2024-04-02
  • 如何将sql文件导入数据库
    要将SQL文件导入数据库,可以使用以下几种方法:1. 使用命令行工具:- 打开命令行工具,进入到安装了数据库的目录下的bin文件夹。...
    99+
    2023-09-23
    数据库
  • mysql数据库如何导入csv文件
    要导入CSV文件到MySQL数据库,可以使用MySQL的命令行工具或者通过MySQL Workbench进行操作。以下是使用命令行工...
    99+
    2024-04-22
    mysql
  • oracle数据库如何导入sql文件
    在Oracle数据库中导入SQL文件可以通过SQL*Plus工具或者Oracle SQL Developer工具来实现。以下是两种方...
    99+
    2024-04-22
    oracle
  • oracle如何查询每张表的数据条数
    有多种方法可以查询每张表的数据条数,以下是其中的一些方法: 使用COUNT(*)函数查询每张表的数据条数: SELECT ...
    99+
    2024-04-09
    oracle
  • oracle如何导出某张表的数据
    在Oracle数据库中,可以使用以下方法导出某张表的数据: 使用SQL Developer工具导出数据: 打开SQL Deve...
    99+
    2024-04-23
    oracle
  • 如何将数据库中的数据导成 excel 文件
    这个要看下具体格式,如果只是将数据库中的明细数据逐条导出到 excel 中的话,这个直接使用开源的 poi 就行,具体可以直接百度下,但是这种实际上没多大意义,大多数的需求是要求按照特定的格式导出,比如订单信息表要求每个订单号的数据导出到一...
    99+
    2015-10-31
    如何将数据库中的数据导成 excel 文件
  • pg从csv文件导入数据到数据库中
    前置条件  linux环境下安装的pg  csv的tar.gz包已经上传到指定路径中(linux),建议表名个文件名一致   所有表和schema已建立 正式开始    1.在csv的tar包所在路径下,解压所有...
    99+
    2020-07-13
    pg从csv文件导入数据到数据库中
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作