clickhouse-數據導入導出方案

一、簡介

clickhouse有多種數據的導入導出方式,可以靈活使用,下面對這些方式分別做些介紹,導入導出的寫法與格式和格式設置有關。

二、導入

1.從s3導入

詳情可查看官網,也可以在這里獲取數據集

-- 建庫建表
CREATE DATABASE git;CREATE TABLE git.commits
(hash String,author LowCardinality(String),time DateTime,message String,files_added UInt32,files_deleted UInt32,files_renamed UInt32,files_modified UInt32,lines_added UInt32,lines_deleted UInt32,hunks_added UInt32,hunks_removed UInt32,hunks_changed UInt32
) ENGINE = MergeTree ORDER BY time;-- 導入數據
INSERT INTO git.commits SELECT *
FROM s3('https://datasets-documentation.s3.amazonaws.com/github/commits/clickhouse/commits.tsv.xz', 'TSV', 'hash String,author LowCardinality(String), time DateTime, message String, files_added UInt32, files_deleted UInt32, files_renamed UInt32, files_modified UInt32, lines_added UInt32, lines_deleted UInt32, hunks_added UInt32, hunks_removed UInt32, hunks_changed UInt32')0 rows in set. Elapsed: 1.826 sec. Processed 62.78 thousand rows, 8.50 MB (34.39 thousand rows/s., 4.66 MB/s.)

s3的表達式如下

s3(path, [aws_access_key_id, aws_secret_access_key,] [format, [structure, [compression]]])
  • path — 包含文件路徑的存儲桶 URL。 這在只讀模式下支持以下通配符:*、?、{abc,def} 和 {N…M},其中 N、M 是數字,‘abc’、‘def’ 是字符串。 有關更多信息,請參閱有關在路徑中使用通配符的文檔。
  • format — 文件的格式。
  • structure — 表的結構。 格式為“column1_name、column1_type、column2_name、column2_type,…”。
  • compression — 參數是可選的。 支持的值:none、gzip/gz、brotli/br、xz/LZMA、zstd/zst。 默認情況下,它將按文件擴展名自動檢測壓縮。

所以我們可以看出來上面的insert語句中,第一個參數是s3的url,第二個參數是說明文件為TSV文件,第三個參數把表的結構寫下來了,這里沒有給第四個參數,因為默認檢測了擴展名為xz,所以不需要提供

2.從本地導入

這里可以通過官網獲取更詳細的內容

2.1 從本地其他文件導入

# 寫法一:
clickhouse-client -q "INSERT INTO git.com FORMAT CSV" < out.csv
# 寫法二:
INSERT INTO com
FROM INFILE '/data/tools/out.csv'
FORMAT CSV
# 寫法三:
cat out.csv|clickhouse-client -q "INSERT INTO git.com FORMAT CSV"

2.2 從本地sql文件導入

ddl語句將被跳過

INSERT INTO com
FROM INFILE '/data/tools/dump.sql' FORMAT MySQLDump

ps: 也可以直接通過文件讀取數據,但是要注意讀取文件的位置要在這個配置里面:user_files_path,不然會沒有權限

 SELECT *
FROM file('dump.sql', MySQLDump)
LIMIT 5

2.3 二進制文件

詳細內容可以在官網中查看

INSERT INTO com
FROM INFILE '/data/tools/data.clickhouse' FORMAT NativeINSERT INTO com
FROM INFILE '/data/tools/data.clickhouse' COMPRESSION 'lz4' FORMAT NativeINSERT INTO com
FROM INFILE '/data/tools/data.binary' FORMAT RowBinaryINSERT INTO com
FROM INFILE '/data/tools/data.msgpk' FORMAT MsgPack

ps: 導入之前可以用以下語句查看下文件內容,不過也有同樣的限制,文件的位置要在user_files_path配置里

DESCRIBE file('data.clickhouse', Native);

三、導出

1.導出數據到s3

1.1 從s3中查詢數據

SELECT *
FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/trips_*.gz', 'TabSeparatedWithNames')
LIMIT 10;SELECT  _path, _file, trip_id
FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/trips_0.gz', 'TabSeparatedWithNames')
LIMIT 5;

注意: 我們不需要列出列,因為 TabSeparatedWithNames 格式對第一行中的列名稱進行編碼。 其他格式(例如 CSV 或 TSV)將為此查詢返回自動生成的列,例如 c1、c2、c3 等。
查詢還支持虛擬列 _path 和 _file,它們分別提供有關存儲桶路徑和文件名的信息。

1.2 導出數據到s3

# 導出數據到s3的單個文件中
INSERT INTO FUNCTIONs3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/csv/trips.csv.lz4','s3_key','s3_secret','CSV')
SELECT *
FROM trips
LIMIT 10000;
# 導出數據到s3的多個文件中
INSERT INTO FUNCTIONs3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/csv/trips_{_partition_id}.csv.lz4','s3_key','s3_secret','CSV')PARTITION BY rand() % 10
SELECT *
FROM trips
LIMIT 100000;

ps: clickhouse還有更多和s3聯動的高級方式,這里先不做說明,后續講解

2.導出到本地

2.1其他文件

SELECT *
FROM com
INTO OUTFILE '/data/tools/out.csv'
FORMAT CSVWithNames

2.2 sql文件

涉及到的相關參數:

  • output_format_sql_insert_table_name: 指定導出表的名稱,默認值為table
  • output_format_sql_insert_include_column_names:指定在插入查詢中是否包含列,默認包含,設置為0則不包含
  • output_format_sql_insert_max_batch_size:一個insert語句中的最大行數,默認為65505
  • output_format_sql_insert_quote_names :是否用反引號包含字段
  • output_format_sql_insert_use_replace:使用replace語句而不是用insert語句,默認值為false
select * from commits limit 100 into outfile '/data/tools/dump.sql' truncate format SQLInsert;
SET output_format_sql_insert_table_name = 'out_table';
select * from table1 into outfile '/data/tools/dump.sql' [append|truncate] format SQLInsert;
# 可以看到/data/tools/dump.sql的文件內容如下,sql的名字變成了out_table
INSERT INTO out_table (`id`, `column1`) VALUES (1, 'abc');

2.3 二進制文件

SELECT * FROM com
INTO OUTFILE '/data/tools/data.clickhouse' FORMAT NativeSELECT * FROM com
INTO OUTFILE '/data/tools/data.clickhouse' COMPRESSION 'lz4' FORMAT NativeSELECT * FROM com
INTO OUTFILE '/data/tools/data.binary' FORMAT RowBinary# 這里必須要用limit1,多導出的話文件格式就不對了,jpg圖片無法正常打開
SELECT * FROM com limit 1
INTO OUTFILE '/data/tools/data.jpg'FORMAT RawBLOBSELECT * FROM com
INTO OUTFILE '/data/tools/data.msgpk'FORMAT MsgPack

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41316.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41316.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41316.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

whisper語音識別部署及WER評價

1.whisper部署 詳細過程可以參照&#xff1a;&#x1f3e0; 創建項目文件夾 mkdir whisper cd whisper conda創建虛擬環境 conda create -n py310 python3.10 -c conda-forge -y 安裝pytorch pip install --pre torch torchvision torchaudio --extra-index-url 下載whisper p…

智慧工地云平臺源碼——塔機監控系統

智慧工地概念 智慧工地是一種嶄新的工程全生命周期管理理念&#xff0c;是指運用信息化手段&#xff0c;通過對工程項目進行精確設計和施工模擬&#xff0c;圍繞施工過程管理&#xff0c;建立互聯協同、智能生產、科學管理的施工項目信息化生態圈&#xff0c;并將此數據在虛擬…

鴿王-稚暉君,“遠征”A1啟程

看到這篇文章的人&#xff0c;想必對野生鋼鐵俠-稚暉君&#xff0c;都有所了解。作為華為的天才少年&#xff0c;獲得了很多的榮譽&#xff0c;作為B站有名的鴿王&#xff0c;在沉浮一段時間后終于要帶著新的東西和大家見面了。動態-嗶哩嗶哩https://b23.tv/Jv7tIjg 眾所周知&a…

網絡通信原理TCP字段解析(第四十七課)

字段含義Source Port(源端口號)源端口,標識哪

vueuse常用方法

useDateFormat 時間格式化 <script setup lang"ts">import { useNow, useDateFormat } from vueuse/coreconst formatted useDateFormat(useNow(), YYYY-MM-DD HH:mm:ss)</script><template><div>{{ formatted }}</div> </templa…

el-input添加自定義指令只允許輸入中文/英文/數字,兼容輸入法事件

省流 script: directives: {regexp: {inserted: (el, binding, vnode) > {let composition falseconst formatValue function (e) {if (composition) return// vnode.componentInstance組件實例vnode.componentInstance.$emit(input, e.target.value.replace(/[^\u4e00-…

Python學習筆記_基礎篇(十二)_nmap使用及案例

nmap概念及功能 概念 NMap&#xff0c;也就是Network Mapper&#xff0c;最早是Linux下的網絡掃描和嗅探工具包。 nmap是一個網絡連接端掃描軟件&#xff0c;用來掃描網上電腦開放的網絡連接端。確定哪些服務運行在哪些連接端&#xff0c;并且推斷計算機運行哪個操作系統&am…

ChatGPT在智能音樂推薦和個性化播放列表中的應用如何?

智能音樂推薦和個性化播放列表是音樂流媒體領域中的重要應用&#xff0c;可以幫助用戶發現新音樂、定制自己的音樂體驗&#xff0c;并提升音樂平臺的用戶滿意度。ChatGPT作為一種先進的自然語言處理模型&#xff0c;可以在智能音樂推薦和個性化播放列表領域發揮重要作用。本文將…

神經網絡基礎-神經網絡補充概念-56-遷移學習

遷移學習&#xff08;Transfer Learning&#xff09;是一種機器學習技術&#xff0c;旨在將在一個任務上學到的知識或模型遷移到另一個相關任務上&#xff0c;以提高新任務的性能。遷移學習的核心思想是通過利用源領域&#xff08;source domain&#xff09;的知識來改善目標領…

微信小程序全局事件訂閱eventBus

微信小程序全局事件訂閱 在Vue開發中&#xff0c;我們可能用過eventBus來解決全局范圍內的事件訂閱及觸發邏輯&#xff0c;在微信小程序的開發中我們可能也也會遇到同樣的需求&#xff0c;那么我們嘗試下在小程序&#xff08;原生小程序開發&#xff09;中實現類似eventBus的事…

大模型技術實踐(一)|ChatGLM2-6B基于UCloud UK8S的創新應用

近半年來&#xff0c;通過對多款主流大語言模型進行了調研&#xff0c;我們針對其訓練方法和模型特點進行逐一分析&#xff0c;方便大家更加深入了解和使用大模型。本文將重點分享ChatGLM2-6B基于UCloud云平臺的UK8S實踐應用。 01各模型結構及特點 自從2017年6月谷歌推出Transf…

FlexTools plugin and 3dWindow plugin for SketchUp Crack

FlexTools v2.3.6 plugin for SketchUp 3dWindow v.4.5 plugin for SketchUp 建筑師和3D藝術家使用FlexTools創建SketchUp門、窗、樓梯和其他建筑元素&#xff0c;具有卓越的速度和控制水平。 SketchUp功能強大但易于使用的擴展。對于在施工圖或建筑圖中使用SketchUp的每個人…

數學建模:論文排版技巧及圖表公式規范制作

Excel 論文樣式提前設置利用題注和表注能夠自動排序mac m1 mathtype沒有永久版&#xff0c;淘寶價格比官網低 編輯公式注意事項&#xff1a; 1、公式居中&#xff0c;標號為英文狀態輸入并右對齊。 2、中英文狀態下&#xff0c;對應字母的狀態不同&#xff0c;請合理選擇。 3、…

034_小馳私房菜_[問題復盤] Qcom平臺,某些三方相機拍照旋轉90度

全網最具價值的Android Camera開發學習系列資料~ 作者:8年Android Camera開發,從Camera app一直做到Hal和驅動~ 歡迎訂閱,相信能擴展你的知識面,提升個人能力~ 【一、問題】 某些三方相機,預覽正常,拍照旋轉90度 【二、問題排查】 1 ) HAL這邊Jpeg編碼數據在哪個地方…

C# 隨機法求解線性規劃問題 蒙特卡洛

線性規劃問題: max3x12x2 x12x2<5 2x1x2<4 4x13x2<9 x1>0 x2>0 正確的結果:x11.5; x21, max z6.5 Random random1 new Random(DateTime.Now.Millisecond);Random random2 new Random(DateTime.Now.Millisecond*DateTime.Now.Millisecond);double max-9999,x1…

Pycharm與Anaconda Python的開發環境搭建

目錄 一&#xff1a;下載 二&#xff1a;安裝python 三&#xff1a;設置Pycharm 一&#xff1a;下載 下載Anaconda&#xff1a; Anaconda | The World’s Most Popular Data Science Platform 安裝好以后&#xff0c;設置一下環境變量&#xff1a; 打開命令行&#xff0c…

UI界面設置

文章目錄 1. 修改 share.html 內容如下&#xff1a;2. 修改 html 文件格式為 utf-83.保存&#xff0c;運行程序4. 訪問頁面 1. 修改 share.html 內容如下&#xff1a; <!DOCTYPE html><html> <head><meta charset"utf-8"><title>1v1屏…

uniapp 官方擴展組件 uni-combox 實現:只能選擇不能手寫(輸入中支持過濾顯示下拉列表)

uniapp 官方擴展組件 uni-combox 實現&#xff1a;只能選擇不能手寫&#xff08;輸入中支持過濾顯示下拉列表&#xff09; uni-comboxuni-combox 原本支持&#xff1a;問題&#xff1a; 改造源碼參考資料 uni-combox uni-combox 原本支持&#xff1a; 下拉選擇。輸入關鍵字&am…

【002】學習筆記之typescript的【任意類型】

任意類型 頂級類型&#xff1a;any類型和 unknown 類型 any類型 聲明變量的時候沒有指定任意類型默認為any任意類型都可以賦值給any&#xff0c;不需要檢查類型。也是他的弊端如果使用any 就失去了TS類型檢測的作用 unknown 類型 TypeScript 3.0中引入的 unknown 類型也被認為…

WSL2 ubuntu子系統換源

文章目錄 1.直接編輯/etc/apt/sources.list文件&#xff08;需要使用 sudo&#xff09;:2.將文件中的內容刪除&#xff0c;將以下對應版本鏡像源復制到里面。ubuntu的鏡像源 3.更新 1.直接編輯/etc/apt/sources.list文件&#xff08;需要使用 sudo&#xff09;: 將原文件做備份…