最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Postgres copy命令導(dǎo)入導(dǎo)出數(shù)據(jù)的操作方法

 更新時(shí)間:2024年08月08日 16:59:02   作者:wtopps  
最近有需要對(duì)數(shù)據(jù)進(jìn)行遷移的需求,由于postgres性能的關(guān)系,單表3000W的數(shù)據(jù)量查詢起來有一些慢,需要對(duì)大表進(jìn)行切割,拆成若干個(gè)子表,涉及到原有數(shù)據(jù)要遷移到子表的需求,這篇文章主要介紹了Postgres copy命令導(dǎo)入導(dǎo)出數(shù)據(jù)的操作方法,需要的朋友可以參考下

前言

最近有需要對(duì)數(shù)據(jù)進(jìn)行遷移的需求,由于postgres性能的關(guān)系,單表3000W的數(shù)據(jù)量查詢起來有一些慢,需要對(duì)大表進(jìn)行切割,拆成若干個(gè)子表,涉及到原有數(shù)據(jù)要遷移到子表的需求。起初的想法是使用存儲(chǔ)過程,使用select insert方式進(jìn)行,但是數(shù)據(jù)量大的時(shí)候耗時(shí)有點(diǎn)久,于是需要想別的辦法,就發(fā)現(xiàn)了postgres本身支持的copy命令。

copy命令

COPY在PostgreSQL表和文件之間交換數(shù)據(jù)。 COPY TO把一個(gè)表的所有內(nèi)容都拷貝到一個(gè)文件,而COPY FROM從一個(gè)文件里拷貝數(shù)據(jù)到一個(gè)表里(把數(shù)據(jù)附加到表中已經(jīng)存在的內(nèi)容里)。 COPY TO還能拷貝SELECT查詢的結(jié)果。

如果聲明了一個(gè)字段列表,COPY將只在文件和表之間拷貝已聲明字段的數(shù)據(jù)。 如果表中有任何不在字段列表里的字段,那么COPY FROM將為那些字段插入缺省值。

帶文件名的COPY指示PostgreSQL服務(wù)器直接從文件中讀寫數(shù)據(jù)。 如果聲明了文件名,那么服務(wù)器必須可以訪問該文件,而且文件名必須從服務(wù)器的角度聲明。 如果使用了PROGRAM選項(xiàng),則服務(wù)器會(huì)從指定的這個(gè)程序進(jìn)行輸入或是寫入該程序作為輸出。 如果使用了STDIN 或STDOUT選項(xiàng),那么數(shù)據(jù)將通過客戶端和服務(wù)器之間的連接來傳輸。

常用參數(shù)說明:

table_name
現(xiàn)存表的名字(可以有模式修飾)

column_name
可選的待拷貝字段列表。如果沒有聲明字段列表,那么將使用所有字段

query
一個(gè)必須用圓括弧包圍的SELECT或VALUES命令,其結(jié)果將被拷貝

filename
輸入或輸出文件的路徑名。輸入文件名可以是絕對(duì)或是相對(duì)的路徑,但輸出文件名必須是絕對(duì)路徑。 Windows用戶可能需要使用E”字符串和雙反斜線作為路徑名稱

PROGRAM
需執(zhí)行的程序名。在COPY FROM命令中,輸入是從程序的標(biāo)準(zhǔn)輸出中讀取,而在COPY TO中,命令的輸出會(huì)作為程序的標(biāo)準(zhǔn)輸入。

注意,程序一般是在命令行界面下執(zhí)行,當(dāng)用戶需要傳遞一些變量給程序時(shí),如果這些變量的來源不是可靠的,用戶必須小心過濾處理那些對(duì)命令行界面來說是有特殊意義的字符。 基于安全的原因,最好是使用固定的命令字符串,或者至少是應(yīng)避免直接使用用戶輸入(應(yīng)先過濾特殊字符)

STDOUT
聲明輸入將寫入客戶端應(yīng)用

FORMAT
選擇被讀或者寫的數(shù)據(jù)格式:text、csv(逗號(hào)分隔值),或者binary。 默認(rèn)是text

導(dǎo)出CSV:

命令:

COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }
    TO { 'filename' | PROGRAM 'command' | STDOUT }
    [ [ WITH ] ( option [, ...] ) ]

copy to的導(dǎo)出速度非常之快,經(jīng)測(cè)試10W的數(shù)據(jù)量只需要3秒左右的時(shí)間

示例:

COPY user TO '/tmp/data/test.csv' WITH csv;

也可以導(dǎo)出指定的屬性:

COPY user(name,password) TO '/tmp/data/test.csv' WITH csv;

也可以使用select 語句:

COPY (select * from user) TO '/tmp/data/test.csv' WITH csv;

也可以指定要導(dǎo)出哪些字段:

COPY (select name,age from user) TO '/tmp/data/test.csv' WITH csv header;

導(dǎo)入CSV:

命令:

COPY table_name [ ( column_name [, ...] ) ]
    FROM { 'filename' | PROGRAM 'command' | STDIN }
    [ [ WITH ] ( option [, ...] ) ]

示例:

COPY user_1 FROM '/tmp/data/test.csv' WITH csv;

導(dǎo)入命令基本與導(dǎo)出一樣,只是將TO 改為 FROM

如果導(dǎo)出的時(shí)候,指定了header屬性,那么在導(dǎo)入的時(shí)候,也需要指定:

COPY user_1(name, age) FROM '/tmp/data/test.csv' WITH csv header;

注意事項(xiàng):

第一點(diǎn):
copy命令必須在plsql命令行執(zhí)行,執(zhí)行用戶必須為superuser,否則會(huì)提示:

ERROR:  must be superuser to COPY to or from a file
HINT:  Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.

普通用戶進(jìn)行執(zhí)行,需要在copy前面加入 “\”,即 \copy即可

第二點(diǎn):
如果導(dǎo)出的字段,有integer[]類型,直接導(dǎo)出,再導(dǎo)入的話,會(huì)有問題,解決辦法是需要在導(dǎo)出的時(shí)候,進(jìn)行處理:

\COPY ( select coalesce(integer_array, '{}')::integer[] as integer_array from table ) TO '/tmp/data.csv' with csv header;

更多詳細(xì)信息,可以查看官方文檔:

http://www.postgres.cn/docs/9.3/sql-copy.html

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

您可能感興趣的文章:

相關(guān)文章

  • 一文詳解PostgreSQL復(fù)制參數(shù)

    一文詳解PostgreSQL復(fù)制參數(shù)

    PostgreSQL 作為一款功能強(qiáng)大的開源關(guān)系型數(shù)據(jù)庫,其復(fù)制功能對(duì)于構(gòu)建高可用性系統(tǒng)至關(guān)重要,本文給大家詳細(xì)介紹了PostgreSQL的復(fù)制參數(shù),需要的朋友可以參考下
    2025-05-05
  • Postgresql 截取字符串的案例

    Postgresql 截取字符串的案例

    這篇文章主要介紹了Postgresql 截取字符串的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • PostgreSQL存儲(chǔ)過程用法實(shí)戰(zhàn)詳解

    PostgreSQL存儲(chǔ)過程用法實(shí)戰(zhàn)詳解

    這篇文章主要介紹了PostgreSQL存儲(chǔ)過程用法,結(jié)合具體實(shí)例詳細(xì)分析了PostgreSQL數(shù)據(jù)庫存儲(chǔ)過程的定義、使用方法及相關(guān)操作注意事項(xiàng),并附帶一個(gè)完整實(shí)例供大家參考,需要的朋友可以參考下
    2018-08-08
  • Postgresql的select優(yōu)化操作(快了200倍)

    Postgresql的select優(yōu)化操作(快了200倍)

    這篇文章主要介紹了Postgresql的select優(yōu)化操作(快了200倍),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • postgresql數(shù)據(jù)庫設(shè)置id自增的基本方法舉例例子解析

    postgresql數(shù)據(jù)庫設(shè)置id自增的基本方法舉例例子解析

    這篇文章主要給大家介紹了關(guān)于postgresql數(shù)據(jù)庫設(shè)置id自增的基本方法舉例,文章介紹了在PostgreSQL中實(shí)現(xiàn)自增ID的兩種方法,分別是使用序列和觸發(fā)器,序列方法簡(jiǎn)單直接,而觸發(fā)器和函數(shù)方法則提供了更大的靈活性,需要的朋友可以參考下
    2024-11-11
  • PostgreSQL如何修改默認(rèn)端口號(hào)

    PostgreSQL如何修改默認(rèn)端口號(hào)

    文章主要內(nèi)容是關(guān)于在升級(jí)PostgreSQL過程中遇到的問題,以及解決這些問題的方法,升級(jí)過程中,由于端口號(hào)設(shè)置不正確,導(dǎo)致psql連接到舊版本的服務(wù)器,從而引發(fā)語法錯(cuò)誤,解決方法是在連接數(shù)據(jù)庫時(shí)指定正確的端口號(hào),或者修改默認(rèn)端口號(hào)
    2024-12-12
  • 設(shè)置PostgreSQL表字段為自增主鍵的方法

    設(shè)置PostgreSQL表字段為自增主鍵的方法

    本文主要介紹了如何在數(shù)據(jù)庫中復(fù)制表結(jié)構(gòu)及數(shù)據(jù),并設(shè)置新表的自增主鍵,同時(shí),文章討論了利用 PostgreSQL 的窗口函數(shù) ROW_NUMBER() 實(shí)現(xiàn)去重的方法,即保留重復(fù)記錄中的一條,其他設(shè)置為無效或刪除,此外,還提到了復(fù)制表時(shí)需要手動(dòng)添加約束和索引,需要的朋友可以參考下
    2025-10-10
  • 解決PostgreSQL數(shù)據(jù)遷移過程中的數(shù)據(jù)類型不匹配問題

    解決PostgreSQL數(shù)據(jù)遷移過程中的數(shù)據(jù)類型不匹配問題

    在數(shù)據(jù)遷移的過程中,經(jīng)常會(huì)遇到源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫之間的數(shù)據(jù)類型不匹配的情況,對(duì)于 PostgreSQL 數(shù)據(jù)庫來說,處理這種數(shù)據(jù)類型不匹配問題需要一些特定的策略和技巧,需要的朋友可以參考下
    2024-07-07
  • PostgreSQL 16 搭配 PgVector:Windows 11 完整安裝教程

    PostgreSQL 16 搭配 PgVector:Windows 11&nbs

    PgVector助力PostgreSQL實(shí)現(xiàn)向量數(shù)據(jù)庫功能,簡(jiǎn)化AI檢索架構(gòu);支持多種向量類型與距離算法,輕松實(shí)現(xiàn)多媒體檢索與個(gè)性化推薦;適合Windows及Linux環(huán)境部署,感興趣的朋友跟隨小編一起看看吧
    2026-05-05
  • PostgreSQL常用字符串函數(shù)與示例說明小結(jié)

    PostgreSQL常用字符串函數(shù)與示例說明小結(jié)

    文章介紹了PostgreSQL中常用字符串函數(shù)的使用方法,包括空值處理、字符串位置查詢、長(zhǎng)度計(jì)算、大小寫轉(zhuǎn)換、去除空格、連接、替換、匹配、拆分和截取等操作,感興趣的朋友跟隨小編一起看看吧
    2024-11-11

最新評(píng)論

孟州市| 巫溪县| 铁力市| 武隆县| 达州市| 绥德县| 姚安县| 龙里县| 祁东县| 嵊州市| 静海县| 泸水县| 邹城市| 东山县| 普兰店市| 鸡泽县| 边坝县| 公安县| 金山区| 遂昌县| 紫阳县| 南阳市| 阳曲县| 平果县| 涿州市| 丹江口市| 天镇县| 茂名市| 准格尔旗| 资阳市| 城步| 岳阳市| 尉犁县| 建湖县| 南宁市| 靖州| 哈尔滨市| 万宁市| 延川县| 西乌珠穆沁旗| 临澧县|