日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gbase 导出_使用GBase 8t外部表进行高速数据导入导出

發布時間:2024/1/1 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gbase 导出_使用GBase 8t外部表进行高速数据导入导出 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是外部表

在GBase 8t中,支持創建一種不受數據庫服務器管理的數據表,表的數據來源于格式化的數據文件,數據庫使用FIFO VP以Nonblocking的方式來操作表中的數據,因此可以實現高速的數據導入導出。

創建外部表

外部表可以采用以下三種方法創建:

1.使用帶有列指定的 CREATE EXTERNAL TABLE 語句

CREATE EXTERNAL TABLE et_state

(code CHAR(2),sname CHAR(15))

USING (DATAFILES ("DISK:/data/NA_states.unl", "DISK:/data/SA_states.unl"));

2.使用帶有一個 SAMEAS 子句的 CREATE EXTERNAL TABLE

CREATE EXTERNAL TABLE et_state SAMEAS state

USING (DATAFILES ("DISK:/data/states.unl"));

3.使用 SELECT 語句從一個數據源選擇構成外部表的數據

SELECT *

FROM state

INTO EXTERNAL et_state

USING (DATAFILES("DISK:/data/states.unl"));

使用外部表進行數據導入

下面是一個數據加載的例子:

欲加載的表結構如下:

create table warehouse

(

w_id smallint not null ,

w_ytd decimal(12,2),

w_tax decimal(4,4),

w_name char(10),

w_street_1 char(20),

w_street_2 char(20),

w_city char(20),

w_state char(2),

w_zip char(9)

) ;

create unique index idx_warehouse on warehouse(w_id);

數據文件路徑為/home/informix/data/warehouse.unl,使用外部表進行數據加載時要保證每行數據末尾都要有一個分隔符,否則會報錯,這與使用load進行數據導入時不同。

如下為數據導入步驟,

1,創建表warehouse,不創建表warehouse上的索引

2,創建外部表warehouse_ext

drop table if exists warehouse_ext;

create external table warehouse_ext sameas warehouse

using

(datafiles("DISK:/home/informix/data/warehouse.unl"),

format "delimited",

DELIMITER "|",

rejectfile "/home/informix/data/warehouse.err",

maxerrors 10000

);

3,手工做一個檢查點

使用使用onmode -c將表結構刷會磁盤,否則在數據加載過程中會先寫物理日志,影響數據加載的速度。

4,修改表warehouse為裸表

這樣才能使用到Informix中的Light Append,加快數據導入的速度

alter table warehouse type(raw);

5,打開PDQ,進行數據導入,并創建表上的索引

set pdqpriority 100;

insert into warehouse select * from warehouse_ext;

alter table warehouse type(standard);

create unique index idx_warehouse on warehouse(w_id);

數據導入導出監控

可以使用onstat使用來查看數據的導入導出速度

查看數據導入進度:

[informix@centos7 ~]$ onstat -g lap

GBase 8t V8.5 Server Version 12.10.FC4G1AEE -- On-Line -- Up 00:01:06 -- 2394568 Kbytes

Light Append Info

session id address cur_ppage la_npused la_ndata la_nrows bufcnt

la_nrows為當前導入的記錄數

查看數據導出進度:

[informix@centos7 ~]$ onstat -g scn

GBase 8t Database Server Version 12.10.FC4G1AEE -- On-Line -- Up 02:09:24 -- 1385528 Kbytes

Light Scan Info

descriptor address next_lpage next_ppage ppage_left bufcnt look_aside

RSAM batch sequential scan info

SesID Thread Partnum Rowid Rows Scan'd Scan Type Lock Mode Notes

" 88 167 50013c 3041907 1185648 Light +Test Forward row lookup,Must copy,"

RSAM batch index scan info

SesID Thread Partnum Scan Type Lock Mode Notes

Rows Scan 為當前導出的記錄數

注意事項

在使用外部表進行數據加載的時候有兩點需要注意,

使用Light Append加快數據導入的速度,與light scan不同的是,我們沒有辦法強制啟用light append,而只能在同時滿足如下2個特定條件的情況下,數據庫優化器將自動啟用。

? Raw table 即對表的操作取消日志

create raw table…,或者通過alter table tabname type(raw);來創建或者修改為rawtable。對臨時表with no log情況也有效。

? No Index 表沒有任何索引

在創建完外部表后需要手工做一個檢查點的操作,否則會將數據先寫入物理日志,再往dbspace上寫。我們可以使用onstat -D監控數據讀寫情況,使用外部表進行數據加載時,是不會寫物理日志或只有少量的物理日志讀寫,如沒有手工做檢查點,則會看到有大量的物理日志讀寫,這一步完全是可跳過的。

使用外部表進行數據導出

使用外部表進行數據導出時大體的步驟與上面的相同,只是在進行數據導出時需要打開輕量掃描的開關

set environment IFX_BATCHEDREAD_TABLE '1';

總結

以上是生活随笔為你收集整理的gbase 导出_使用GBase 8t外部表进行高速数据导入导出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。