亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

一、前言

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

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

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

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

1、語法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、語法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)特別說明:

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

2)參數(shù)說明:

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

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

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

1、操作步驟

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

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

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

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

“su omm

“mkdir mydata

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

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

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

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

COPY FROM如果是從數(shù)據(jù)文件導(dǎo)入數(shù)據(jù)到庫表,需要準(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”等文本文件格式存儲,文件分隔符以“不跟字段值重復(fù)”為原則。文件編碼格式需要與數(shù)據(jù)庫設(shè)置的格式統(tǒng)一,防止出現(xiàn)中文亂碼。

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

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

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

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、從一個數(shù)據(jù)文件拷貝數(shù)據(jù)到一個表(示例)

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

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

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

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

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

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

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

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

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

2、數(shù)據(jù)倉庫:

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

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

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

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

五、小結(jié)

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

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

相關(guān)文章

最新評論