欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

GaussDB數(shù)據(jù)庫(kù)使用COPY命令導(dǎo)入導(dǎo)出數(shù)據(jù)的場(chǎng)景分析

 更新時(shí)間:2024年01月05日 11:51:46   作者:Gauss松鼠會(huì)  
使用COPY命令可以方便地導(dǎo)入數(shù)據(jù)到GaussDB,GaussDB還提供了其他數(shù)據(jù)導(dǎo)入工具和功能,如使用GDS導(dǎo)入數(shù)據(jù)、使用INSERT多行插入、使用gsql元命令導(dǎo)入數(shù)據(jù)、ETL工具集成等,以滿足不同場(chǎng)景下的數(shù)據(jù)導(dǎo)入需求,對(duì)GaussDB COPY命令相關(guān)知識(shí)感興趣的朋友一起看看吧

一、前言

在數(shù)字化時(shí)代,數(shù)據(jù)是驅(qū)動(dòng)業(yè)務(wù)決策和創(chuàng)新的關(guān)鍵要素。數(shù)據(jù)庫(kù)作為數(shù)據(jù)存儲(chǔ)、管理和分析的核心工具,其高效、準(zhǔn)確的數(shù)據(jù)導(dǎo)入功能至關(guān)重要。

GaussDB作為華為推出的高性能數(shù)據(jù)庫(kù),提供了豐富的數(shù)據(jù)導(dǎo)入選項(xiàng),其中之一便是COPY命令。COPY命令為數(shù)據(jù)遷移、備份恢復(fù)、大數(shù)據(jù)加載等場(chǎng)景提供了一個(gè)高效且靈活的手段。通過COPY命令,用戶可以將外部文件、數(shù)據(jù)流或其他數(shù)據(jù)源的數(shù)據(jù)快速導(dǎo)入到GaussDB中,從而支持業(yè)務(wù)分析、報(bào)表生成、數(shù)據(jù)挖掘等多樣化需求。

二、GaussDB數(shù)據(jù)庫(kù)使用COPY命令導(dǎo)數(shù)語(yǔ)法

通過COPY命令實(shí)現(xiàn)在表和文件之間拷貝。在GaussDB中,COPY FROM從一個(gè)文件拷貝數(shù)據(jù)到一個(gè)表,COPY TO把一個(gè)表的數(shù)據(jù)拷貝到一個(gè)文件。

1、語(yǔ)法COPY FROM

COPY table_name [ ( column_name [, ...] ) ] 
    FROM { 'filename' | STDIN }
    [ [ USING ] DELIMITERS 'delimiters' ]
    [ WITHOUT ESCAPING ]
    [ LOG ERRORS ]
    [ REJECT LIMIT 'limit' ]
    [ [ WITH ] ( option [, ...] ) ]
    | copy_option
    | TRANSFORM  ( { column_name [ data_type ] [ AS transform_expr ] } [, ...] )
    | FIXED FORMATTER ( { column_name( offset, length ) } [, ...] ) [ ( option [, ...] ) | copy_option [  ...] ] ];

2、語(yǔ)法COPY TO

COPY table_name [ ( column_name [, ...] ) ]
    TO { 'filename' | STDOUT }
    [ [ USING ] DELIMITERS 'delimiters' ]
    [ WITHOUT ESCAPING ]
    [ [ WITH ] ( option [, ...] ) ]
    | copy_option
    | FIXED FORMATTER ( { column_name( offset, length ) } [, ...] ) [ ( option [, ...] ) | copy_option [  ...] ] ];
COPY query
    TO { 'filename' | STDOUT }
    [ WITHOUT ESCAPING ]
    [ [ WITH ] ( option [, ...] ) ]
    | copy_option
    | FIXED FORMATTER ( { column_name( offset, length ) } [, ...] ) [ ( option [, ...] ) | copy_option [  ...] ] ];

3、特別說明及參數(shù)示意

1)特別說明:

  • 語(yǔ)法中的FIXED FORMATTER ( { column_name( offset, length ) } [, ...] )以及 [copy_option [ ...] ] 的無(wú)沖突項(xiàng)可以任意排列組合。
  • (query)與[USING] DELIMITERS不兼容,即若COPY TO的數(shù)據(jù)來(lái)自于一個(gè)query的查詢結(jié)果,那么COPY TO語(yǔ)法不能再指定[USING] DELIMITERS語(yǔ)法子句。
  • 對(duì)于FIXED FORMATTTER語(yǔ)法后面跟隨的copy_option是以空格進(jìn)行分隔的。
  • copy_option是指COPY原生的參數(shù)形式,而option是兼容外表導(dǎo)入的參數(shù)形式。

2)參數(shù)說明:

  • STDIN:聲明輸入是來(lái)自標(biāo)準(zhǔn)輸入。
  • STDOUT:聲明輸出打印到標(biāo)準(zhǔn)輸出。
  • FIXED:打開字段固定長(zhǎng)度模式(每條記錄的每個(gè)字段長(zhǎng)度相同。長(zhǎng)度不足的字段以空格填充,數(shù)字類型字段左對(duì)齊,字符字段右對(duì)齊。字段和字段之間沒有分隔符)。
  • WITHOUT ESCAPING:在TEXT格式中,不對(duì)'\'和后面的字符進(jìn)行轉(zhuǎn)義。僅支持TEXT格式
  • FORMATTER:在固定長(zhǎng)度模式中,定義每一個(gè)字段在數(shù)據(jù)文件中的位置。按照column(offset,length)格式定義每一列在數(shù)據(jù)文件中的位置。
  • OPTION { option_name ' value ' }:用于指定兼容外表的各類參數(shù)
  • TRANSFORM ( { column_name [ data_type ] [ AS transform_expr ] } [, ...] ):指定表中各個(gè)列的轉(zhuǎn)換表達(dá)式;其中data_type指定該列在表達(dá)式參數(shù)中的數(shù)據(jù)類型;transform_expr為目標(biāo)表達(dá)式,返回與表中目標(biāo)列數(shù)據(jù)類型一致的結(jié)果值

三、GaussDB數(shù)據(jù)庫(kù)使用COPY命令導(dǎo)數(shù)示例

COPY 屬于SQL命令,導(dǎo)入導(dǎo)出的文件是在數(shù)據(jù)庫(kù)服務(wù)端的進(jìn)行的。且需要數(shù)據(jù)庫(kù)管理員權(quán)限才可以執(zhí)行,COPY對(duì)較大數(shù)據(jù)集的整體讀寫效率較好。

1、操作步驟

根據(jù)業(yè)務(wù)需求確定導(dǎo)數(shù)需求,提前做好規(guī)劃,具體可參考如下步驟:

2、準(zhǔn)備工作(示例)

1)指定(創(chuàng)建)數(shù)據(jù)文件存取目錄。

登錄數(shù)據(jù)庫(kù)服務(wù)器,切換至omm用戶,在“/home/omm”目錄下創(chuàng)建用于存放數(shù)據(jù)文件的目錄,此處取名“mydata”

“su omm

“mkdir mydata

Tip如果在目錄操作中遇到類似“ls: cannot open directory .: Permission denied”報(bào)錯(cuò),需要切換到“cd /home/omm”目錄下,因?yàn)槠渌脩簦╫mm是數(shù)據(jù)庫(kù)用戶)是不能在root目錄下操作的。另外,有時(shí)候可能還需要通過“chmod”給文件或者文件夾賦權(quán)限,具體根據(jù)實(shí)際報(bào)錯(cuò)提示處理即可。

2)準(zhǔn)備數(shù)據(jù)

COPY TO如果是從庫(kù)表導(dǎo)出數(shù)據(jù)到文件,以文件形式保存,請(qǐng)先確認(rèn)需要被導(dǎo)出的庫(kù)表,實(shí)際業(yè)務(wù)中以真實(shí)存在的表為準(zhǔn),本次為了演示臨時(shí)創(chuàng)建測(cè)試表。

-創(chuàng)建測(cè)試表
DROP TABLE IF EXISTS public.test_3;
CREATE TABLE public.test_3
(
  id int4,
  name varchar(20),
  course varchar(20),
  score int4
);
--插入測(cè)試數(shù)據(jù)
INSERT INTO public.test_3 VALUES (1, 'zhangsan', '語(yǔ)文', 90);
INSERT INTO public.test_3 VALUES (2, 'zhangsan', '數(shù)學(xué)', 95);
INSERT INTO public.test_3 VALUES (3, 'zhangsan', '英語(yǔ)', 85);
INSERT INTO public.test_3 VALUES (4, 'lisi', '語(yǔ)文', 85);
INSERT INTO public.test_3 VALUES (5, 'lisi', '數(shù)學(xué)', 90);
INSERT INTO public.test_3 VALUES (6, 'lisi', '英語(yǔ)', 95);

COPY FROM如果是從數(shù)據(jù)文件導(dǎo)入數(shù)據(jù)到庫(kù)表,需要準(zhǔn)備目標(biāo)表和數(shù)據(jù)文件,目標(biāo)表的表結(jié)構(gòu)和數(shù)據(jù)文件的結(jié)構(gòu)需要根據(jù)業(yè)務(wù)需求提前約定好。

--創(chuàng)建目標(biāo)表
DROP TABLE IF EXISTS public.test_4;
CREATE TABLE public.test_4 
(
  id int4,
  name varchar(20),
  course varchar(20),
  score int4
);

數(shù)據(jù)文件建議均以“.txt、.bat、.csv”等文本文件格式存儲(chǔ),文件分隔符以“不跟字段值重復(fù)”為原則。文件編碼格式需要與數(shù)據(jù)庫(kù)設(shè)置的格式統(tǒng)一,防止出現(xiàn)中文亂碼。

數(shù)據(jù)文件“test_3.csv”(COPY命令相對(duì)大數(shù)據(jù)文件效率更高,此處以示意為主)

1;zhangsan;語(yǔ)文;90
2;zhangsan;數(shù)學(xué);95
3;zhangsan;英語(yǔ);85

3、把一個(gè)表的數(shù)據(jù)拷貝到一個(gè)文件(示例)

1)將數(shù)據(jù)表導(dǎo)出到指定 TXT 文件中(默認(rèn)分隔符是 tab)

COPY public.test_3 TO '/home/omm/mydata/test_3.txt';

2)將數(shù)據(jù)表導(dǎo)出到指定 TXT 文件中(文件指定分隔符為’;’)

COPY public.test_3 TO '/home/omm/mydata/test_3.txt' delimiter ';';

3)將查詢結(jié)果集導(dǎo)出到指定 CSV 文件中(默認(rèn)分隔符為’,’)

COPY (SELECT * FROM public.test_3 WHERE name='zhangsan') TO '/home/omm/mydata/test_3.txt' WITH CSV;

4、從一個(gè)數(shù)據(jù)文件拷貝數(shù)據(jù)到一個(gè)表(示例)

測(cè)試數(shù)據(jù)復(fù)用上文的數(shù)據(jù)文件“test_3.csv”,將其導(dǎo)入到測(cè)試表“public.test_4”。

COPY public.test_4 FROM '/home/omm/mydata/test_3.csv' WITH CSV;

更多信息請(qǐng)參考官網(wǎng):

COPY_云數(shù)據(jù)庫(kù) GaussDB_主備版_3.x版本_SQL參考_SQL語(yǔ)法_華為云

特別說明:數(shù)據(jù)的導(dǎo)入導(dǎo)出一定是在業(yè)務(wù)的需求下進(jìn)行的,其中涉及到類似脫敏(加密)、數(shù)據(jù)覆蓋與被覆蓋、文件存儲(chǔ)目錄管理、數(shù)據(jù)量大小及數(shù)據(jù)導(dǎo)入導(dǎo)出效率等問題,本次不做說明,如有機(jī)會(huì)后續(xù)講解。

四、常見數(shù)據(jù)導(dǎo)入導(dǎo)出的場(chǎng)景

數(shù)據(jù)導(dǎo)入導(dǎo)出常見的應(yīng)用場(chǎng)景常見于數(shù)據(jù)庫(kù)、數(shù)據(jù)倉(cāng)庫(kù)和大數(shù)據(jù)平臺(tái)中。

1、數(shù)據(jù)庫(kù):

  • 數(shù)據(jù)遷移:當(dāng)從一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)遷移到另一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)時(shí),需要進(jìn)行數(shù)據(jù)導(dǎo)入導(dǎo)出,確保數(shù)據(jù)的完整性和準(zhǔn)確性。
  • 備份與恢復(fù):為了防止數(shù)據(jù)丟失,定期備份數(shù)據(jù)庫(kù)是必要的。導(dǎo)入導(dǎo)出功能可以用于備份和恢復(fù)操作。

2、數(shù)據(jù)倉(cāng)庫(kù):

  • ETL(提取、轉(zhuǎn)換、加載):在構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)時(shí),通常需要從多個(gè)源提取數(shù)據(jù),進(jìn)行轉(zhuǎn)換和清洗,然后加載到數(shù)據(jù)倉(cāng)庫(kù)中。這涉及到數(shù)據(jù)的導(dǎo)入導(dǎo)出。
  • 報(bào)表生成:數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)可以導(dǎo)出到報(bào)表中,以供分析和決策。

3、大數(shù)據(jù)平臺(tái):

  • 數(shù)據(jù)集成:在大數(shù)據(jù)平臺(tái)中,可能需要從各種來(lái)源導(dǎo)入大量數(shù)據(jù),然后再導(dǎo)出到其他系統(tǒng)或服務(wù)中。
  • 實(shí)時(shí)分析:某些場(chǎng)景下,需要實(shí)時(shí)地從大數(shù)據(jù)平臺(tái)中導(dǎo)入數(shù)據(jù),以便進(jìn)行實(shí)時(shí)分析或處理。
  • 數(shù)據(jù)備份與恢復(fù):與傳統(tǒng)的數(shù)據(jù)庫(kù)類似,大數(shù)據(jù)平臺(tái)也需要定期備份數(shù)據(jù),以確保數(shù)據(jù)的完整性和可用性。
  • 數(shù)據(jù)共享與分發(fā):大數(shù)據(jù)平臺(tái)的數(shù)據(jù)可以導(dǎo)出到其他系統(tǒng)或服務(wù)中,以實(shí)現(xiàn)數(shù)據(jù)的共享和分發(fā)。

這些場(chǎng)景都強(qiáng)調(diào)了數(shù)據(jù)導(dǎo)入導(dǎo)出的重要性,它們是確保數(shù)據(jù)流動(dòng)、滿足業(yè)務(wù)需求、支持決策和風(fēng)險(xiǎn)管理的基礎(chǔ)設(shè)施。

五、小結(jié)

使用COPY命令可以方便地導(dǎo)入數(shù)據(jù)到GaussDB。只需確保源文件的格式與數(shù)據(jù)庫(kù)表結(jié)構(gòu)相匹配,并正確指定文件路徑,即可輕松完成數(shù)據(jù)導(dǎo)入。此外,GaussDB還提供了其他數(shù)據(jù)導(dǎo)入工具和功能,如使用GDS導(dǎo)入數(shù)據(jù)、使用INSERT多行插入、使用gsql元命令導(dǎo)入數(shù)據(jù)、ETL工具集成等,以滿足不同場(chǎng)景下的數(shù)據(jù)導(dǎo)入需求。

到此這篇關(guān)于GaussDB數(shù)據(jù)庫(kù)使用COPY命令導(dǎo)數(shù)的文章就介紹到這了,更多相關(guān)GaussDB使用COPY命令導(dǎo)數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論