SinoDB数据库导入导出工具External table

        External table又叫SinoDB外部表,外部表采用多线程机制,支持多线程读取、写入数据文件以及多线程数据转换、插入操作。多线程机制只需要消耗相对较少的系统资源,但是能提供高速数据导入、导出,可以应用在数据采集、表重建、数据库迁移等业务场景中。

        对于一个普通表,SinoDB负责其数据存储管理,有相应的DBSPACE、Chunk、extent、page 等,可以创建相应的索引。然而,对于SinoDB的外部表而言,其数据文件由操作系统管理,简单来讲外部表就是一个或者多个文件,SinoDB数据库引擎提供对文件的 SQL 接口访问。文件的格式支持固定格式的文本文件,也支持SinoDB的内部二进制格式。

1.External table创建语法

 create external table table_name([column definition | sameas table_template])
using (
datafiles ('disk:/textfile'),
format 'delimited',
delimiter 'delimiter_string'
);

  • table_name:要创建的外部表名称。
  • table_template:可以指定一个模板,以该表的列定义创建一个外部表。
  • datafiles:指定外部表使用的数据文件。
  • format:指定文件采用的格式化方式。
  • delimiter:指定分隔符。

2. External table使用演示

示例1:创建外部表,定义字段信息,采用“.”作为分隔**

 

[informix@vm84145 data]$ cat exe_data.unl
1.1.Bill.01\.06\.1983.
2.1.John.25\.12\.1985.
3.2.Mary.10\.10\.1987.
4.3.Kate.11\.11\.1989.
5.1.Will Smith.28\.02\.1981.
[informix@vm84145 data]$ export GL_DATE="%d.%m.%iY"
[informix@vm84145 data]$ cat exeternal.sql
-- export GL_DATE="%d.%m.%iY"
create external table t_ext_table(f_employeeid int, f_deptid int, f_employeename varchar(20), f_birthdate date)
using(
datafiles ('disk:/home/informix/data/exe_data.unl'),
format 'delimited',
delimiter '.'
);

select * from t_ext_table;
[informix@vm84145 data]$ dbaccess testdb exeternal.sql

Database selected.

Table created.

f_employeeid    f_deptid f_employeename       f_birthdate

           1           1 Bill                 01.06.1983
           2           1 John                 25.12.1985
           3           2 Mary                 10.10.1987
           4           3 Kate                 11.11.1989
           5           1 Will Smith           28.02.1981

5 row(s) retrieved.

Database closed.

[informix@vm84145 data]$

 示例2:采用sameas快速定义表字段信息,字段定义与已有表一致:

 

[informix@vm84145 daqi]$ ll
total 121196
-rw-rw-r-- 1 informix informix       209 Jul 10 10:23 fjta_news1_ext.sql
-rw-rw-r-- 1 informix informix   1756664 Jul 10 10:21 fjta_news1.unl1
-rw-rw-r-- 1 informix informix    811624 Jul 10 10:26 fjta_news1.unl2
[informix@vm84145 daqi]$ cat fjta_news1_ext.sql
create external table fjta_news1_ext sameas fjta_news1
using(
datafiles('disk:/home/informix/daqi/fjta_news1.unl1',
          'disk:/home/informix/daqi/fjta_news1.unl2'),
format 'delimited',
delimiter '|'
);
[informix@vm84145 daqi]$ dbaccess testdb3 fjta_news1_ext.sql

Database selected.

Table created.

Database closed.
[informix@vm84145 daqi]$ echo "select count(1) from fjta_news1_ext;" |dbaccess testdb3;

Database selected.

         (count)

           15000

1 row(s) retrieved.

Database closed.

 示例3:使用模式正则表达式定义多个文件。

 jta_news1%r(1…4).unl定义了4个文件,如:fjta_news11.unl、fjta_news12.unl、fjta_news13.unl、fjta_news14.unl:

 create external table fjta_news1_ext sameas fjta_news1
using(
datafiles('disk:/home/informix/daqi/fjta_news1%r(1..4).unl'),
format 'delimited',
delimiter '|'
);

 示例4:重建大数据量表

[informix@vm84145 daqi]$ cat new_fjta_news1_ext.sql
create external table new_fjta_news1_ext sameas fjta_news1
using(
datafiles('disk:/home/informix/daqi/new_fjta_news1%r(1..4).unl'),
format 'delimited',
delimiter '|'
);
[informix@vm84145 daqi]$ dbaccess testdb3 new_fjta_news1_ext.sql

Database selected.

Table created.

Database closed.
[informix@vm84145 daqi]$ dbaccess testdb3 -

Database selected.

> set pdqpriority 90;

PDQ Priority set.

> set isolation dirty read;

Isolation level set.

> set environment IFX_BATCHEDREAD_TABLE '1';

Environment set.

> insert into new_fjta_news1_ext select * from fjta_news1;

15819 row(s) inserted.

> set pdqpriority 0;

PDQ Priority set.

[informix@vm84145 daqi]$ ll new*
-rw-rw-rw- 1 informix informix 679391 Jul 10 11:12 new_fjta_news11.unl
-rw-rw-rw- 1 informix informix 725839 Jul 10 11:12 new_fjta_news12.unl
-rw-rw-rw- 1 informix informix 679529 Jul 10 11:12 new_fjta_news13.unl
-rw-rw-rw- 1 informix informix 630876 Jul 10 11:12 new_fjta_news14.unl

[informix@vm84145 daqi]$ cat raw_fjta_news1.sql
create raw table raw_fjta_news1
  (
    id serial ,
    title varchar(100)
        default '' ,
    seo_title varchar(50) ,
    seo_keyword varchar(50) ,
    seo_description varchar(100) ,
    zone_id integer
        default 0 ,
    cat_id integer
        default 0 ,
    source varchar(100)
        default '',
    tag varchar(200)
        default '',
    img_source varchar(100)
        default '',
    is_audit smallint
        default 0 ,
    is_recommend smallint
        default 0 ,
    is_top smallint
        default 0 ,
    add_time integer
        default 0 ,
    number_hits integer
        default 0 ,
    is_home smallint
        default 0 ,
    person_thumb varchar(255) ,
    person_name varchar(100) ,
    person_desc lvarchar(512)
  ) extent size 256 next size 64 lock mode row;

[informix@vm84145 daqi]$ dbaccess testdb3 raw_fjta_news1.sql

Database selected.

Table created.

Database closed.

[informix@vm84145 daqi]$ dbaccess testdb3 -

Database selected.

> set pdqpriority 90;

PDQ Priority set.

> insert into raw_fjta_news1 select * from new_fjta_news1_ext;

15819 row(s) inserted.

> drop table fjta_news1;

Table dropped.

> rename table raw_fjta_news1 to fjta_news1;

Table renamed.

> create index idx_fjta_news1 on fjta_news1(id);

Index created.

> alter table fjta_news1 type(standard);

Table altered.

> set pdqpriority 0;

PDQ Priority set.

 

3. External table使用注意点

  • 以下设置可以提高外部表导入导出性能:

     把大数据文件切分为多个相对较小的文件
     开启PDQ,set pdqpriority=90;
     导出数据时,启用light scan,此时需要设置足够大的虚拟内存段;
     导入数据时采用raw table;
     导入数据时DISABLE约束和索引;

  • ontape/onbar不能备份外部表,需要手工单独进行备份;

  • 外部表不能进行update statistics;

  • 在少量数据的情况下推荐直接使用unload/load,在大数据量表的情况下推荐使用外部表;

     更多信息内容请移步星瑞格官方社区,期待大家加入
    Sinoregal Tech ForumAsk questions, share solutions, and get to know the Sinoregal community.icon-default.png?t=N7T8https://forum.sinoregal.cn/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/10047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenGL入门第四步:摄像机视角变换与交互

OpenGL入门第一步:创建窗口、重写虚函数-CSDN博客 OpenGL入门第二步:颜色、纹理设置(解析)-CSDN博客 OpenGL入门第三步:矩阵变换、坐标系统-CSDN博客 目录 函数解析 具体代码 函数解析 相机视角变换需要与鼠标键盘进行交互,需要重写鼠标和键盘响应函数。 初始化 …

【机器学习】 人工智能和机器学习辅助决策在空战中的未来选择

🚀传送门 🚀文章引言🔒技术层面📕作战结构🌈替代决策选项🎬选项 1:超级战争(Hyperwar)🌠选项 2:超越OODA🌂选项 3:阻止其他…

MySQL的表级锁

📝个人主页:五敷有你 🔥系列专栏:面经 ⛺️稳中求进,晒太阳 表级锁 介绍 对于表锁,分为两类: 表共享读锁表独占写锁 语法 1. 加锁:lock tables 表名... read/write 2.…

MySQL数据库的安装和部署

1.数据库的相关介绍 关系型数据库管理系统:(英文简称:RDBMS) 为我们提供了一种存储数据的特定格式,所谓的数据格式就是表, 在数据库中一张表就称为是一种关系. 在关系型数据库中表由两部分组成&#xf…

电信网关配置管理系统 rewrite.php 文件上传致RCE漏洞复现

0x01 产品简介 中国电信集团有限公司(英文名称“China Telecom”、简称“中国电信”)成立于2000年9月,是中国特大型国有通信企业、上海世博会全球合作伙伴。电信网关配置管理系统是一个用于管理和配置电信网络中网关设备的软件系统。它可以帮助网络管理员实现对网关设备的远…

Linux 进程信号【信号产生】

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:Linux知识分享⏪   🚚代码仓库:Linux代码练习🚚   🌹关注我🫵带你学习更多Linux知识   🔝 目录 前言 信号概念 1. 生活角度的信号 2…

Java入门基础学习笔记1——初识java

1、为什么学习java? 几乎统治了服务端的开发;几乎所有的互联网企业都使用;100%国内大中型企业都用;全球100亿的设备运行java。开发岗位薪资高。 Java的流行度很高,商用占有率很高。 可移植性。 2、Java的背景知识 …

手机录屏怎么录?简单易懂的教程,让你轻松上手!

随着科技的不断发展,手机录屏已经成为人们日常生活中一个非常普遍的需求。无论是录制游戏精彩瞬间、分享App使用教程,还是保存线上会议、录制网课,手机录屏都发挥着重要作用。可是你知道手机录屏怎么录吗?本文将详细介绍三种手机录…

【漏洞复现】RuvarOA协同办公平台 WorkFlow接口处存在SQL注入

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

亲测有效!关键点检测——COCO格式转YOLO格式代码!!!

话不多收,直接上代码,这个我也是找了好久的,分享不易,给个鼓励!(记得点赞收藏) 大家可以直接使用此代码转换你自己的数据集,路径换成你自己的就行了,注意路径格式&#x…

【https】怎么免费实现https!

一、简介 实现 HTTPS(Hyper Text Transfer Protocol Secure)通常需要购买和配置 SSL/TLS 证书,这是确保网站或应用程序安全传输数据的关键步骤。然而,有一些方法可以在某些情况下“免费”地实现 HTTPS,但这通常涉及到…

React - Input框绑定动态State和监听onChange事件,输入时失去焦点

React - Input框绑定动态State和监听onChange事件,输入时失去焦点 一. 案例复现二. 解决方案 一. 案例复现 案例代码如下: import React, { useState } from react; import { Table, Input } from antd; const Column Table.Column; const mockData …

linux打包流程

因为linux有俩个python版本,我们需要切换到python3这个版本,默认是python 2.7 alias pythonpython3 切换到python3 再次执行:python -V 显示出python的版本了,然后查看pip的配置,我们打包里面需要的第三方需要放到pip…

C++面向对象程序设计-北京大学-郭炜【课程笔记(八)】

C面向对象程序设计-北京大学-郭炜【课程笔记(八)】 1、虚函数和多态的基本概念1.1、虚函数1.2、多态多态的表现形式一多态的表现形式二 2、多态实例:魔法门之英雄无敌2.1、**非多态的实现方法:**2.2、**多态的实现方法** 3、多态实…

C#实现长方体棱锥圆柱棱柱圆锥展开折叠旋转缩放

C#实现长方体棱锥圆柱棱柱圆锥展开折叠旋转缩放 C#实现 模型边数 长方体 棱锥 圆柱 棱柱 圆锥 实现功能 展开 折叠 颜色 边框颜色 旋转 缩放 大小 视图方向 项目获取: 项目获取:typora: typora/img (gitee.com) 备用项目获取链接1:yife…

Electron学习笔记(三)

文章目录 相关笔记笔记说明 五、界面1、获取 webContents 实例(1)通过窗口对象的 webContent 属性获取 webContent 实例:(2)获取当前激活窗口的 webContents 实例:(3)在渲染进程中获…

微信小程序原生组件使用

1、video组件使用 <view class"live-video"><video id"myVideo" src"{{videoSrc}}" bindplay"onPlay" bindfullscreenchange"fullScreenChange" controls object- fit"contain"> </video&g…

ubuntu server 22.04 安装docker、docker-compose

ubuntu server 22.04安装docker有两种方式&#xff0c;第一种是使用ubuntu镜像源的软件包进行安装&#xff0c;第二种使用官方GPG密钥手动添加Docker存储库方式进行安装&#xff0c;两种方式都可以&#xff0c;但第二种方式略复杂&#xff0c;这里介绍第一种比较简单的安装方式…

轻松玩转Python文件操作:移动、删除

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; Python文件操作基础 在处理计算机文件时&#xff0c;经常需要执行如移动和删除等基本操作。Python提供了一些内置的库来帮助完成这些任务&#xff0c;其中最常用的就是os模块和shutil模块。这两个模块包含了许多与文…

无需公网IP、无需云服务器,异地组网实现远程直连NAS、游戏联机

手机图片、视频太多&#xff0c;存储空间不够用怎么办?出门在外无法直连家中NAS&#xff0c;远程访问NAS速度慢&#xff1f;自建私有云、多媒体服务器&#xff0c;如何多人远程共享媒体资源&#xff1f;幻兽帕鲁、我的世界、泰拉瑞亚…局域网游戏&#xff0c;想远程多人联机&a…