新聞中心
如何使用shell復(fù)制一行數(shù)據(jù)庫(kù)?

數(shù)據(jù)庫(kù)是現(xiàn)代計(jì)算機(jī)系統(tǒng)中必不可少的組成部分。我們的工作涉及到與數(shù)據(jù)庫(kù)打交道,在某些情況下,需要從一個(gè)數(shù)據(jù)庫(kù)中復(fù)制一行數(shù)據(jù)到另一個(gè)數(shù)據(jù)庫(kù)中。在這種情況下,我們可以使用Shell命令來完成此任務(wù)。接下來,讓我們看一下如何使用Shell復(fù)制一個(gè)數(shù)據(jù)庫(kù)行。
Shell是一種命令行界面,可以通過在終端中輸入命令來與操作系統(tǒng)交互。Shell命令是基于Unix/Linux系統(tǒng)的,可以使用多種方式來復(fù)制數(shù)據(jù)庫(kù)行。在本文中,我們會(huì)涉及其中一種方法,即使用MySQL命令行客戶端來復(fù)制一個(gè)行。這種方法特別適用于需要在不同的MySQL實(shí)例之間復(fù)制數(shù)據(jù)的情況。
之一步,打開終端并登錄到您的MySQL服務(wù)器。一旦您成功登錄,您將能夠看到一個(gè)MySQL命令行提示符,如下所示:
$ mysql -hlocalhost -uroot -p
在這個(gè)命令中,我們正在連接到本地MySQL服務(wù)器,使用用戶名root和我們的密碼。您可以根據(jù)您的需求自定義這個(gè)命令。確保您已獲得適當(dāng)?shù)臋?quán)限,在權(quán)限不足的情況下,命令可能會(huì)失敗。
第二步,選擇您想要復(fù)制的數(shù)據(jù)庫(kù)。您需要指定要復(fù)制的數(shù)據(jù)庫(kù),因?yàn)閺?fù)制數(shù)據(jù)行需要確切的MySQL數(shù)據(jù)庫(kù)。如果您還沒有選擇數(shù)據(jù)庫(kù),請(qǐng)使用以下命令選擇數(shù)據(jù)庫(kù):
mysql> use example_db;
這個(gè)命令將連接到一個(gè)名為example_db的數(shù)據(jù)庫(kù),并將其設(shè)置為默認(rèn)數(shù)據(jù)庫(kù)。自此之后,您可以運(yùn)行任何需要訪問該數(shù)據(jù)庫(kù)的命令。
第三步,查找要復(fù)制的數(shù)據(jù)行。一旦我們連接到要復(fù)制的數(shù)據(jù)庫(kù),我們需要查找要復(fù)制的行。我們可以使用SELECT查詢來查找特定數(shù)據(jù)行。例如,如果我們要復(fù)制ID為25的特定傳感器數(shù)據(jù)行,請(qǐng)使用以下命令:
mysql> SELECT * FROM sensor_data WHERE id = 25;
在這個(gè)命令中,我們正在查找一個(gè)名為sensor_data的表中的特定ID號(hào)數(shù)據(jù)行。一旦我們找到了我們想要復(fù)制的行,我們可以繼續(xù)進(jìn)行下一步。
第四步,復(fù)制數(shù)據(jù)行。一旦我們找到了要復(fù)制的行,我們就可以通過將其插入到新數(shù)據(jù)庫(kù)中來進(jìn)行復(fù)制。我們可以使用INSERT INTO語(yǔ)句來將行插入到目標(biāo)數(shù)據(jù)庫(kù)。例如,如果我們將數(shù)據(jù)行復(fù)制到名為new_database的新數(shù)據(jù)庫(kù)中,請(qǐng)使用以下命令:
mysql> INSERT INTO new_database.sensor_data VALUES (25, ‘2023-01-01 12:00:00’, 100, 200, 300);
在這種情況下,我們正在將ID為25,時(shí)間戳為2023-01-01 12:00:00的一行插入到新的sensor_data表中,并且傳感器值為100, 200, 300。
第五步,驗(yàn)證新數(shù)據(jù)行是否已復(fù)制。一旦我們插入新行并指定其值,我們需要驗(yàn)證行是否已成功復(fù)制。我們可以使用SELECT語(yǔ)句來進(jìn)行驗(yàn)證。例如,如果我們檢查新行是否已成功復(fù)制到new_database.sensor_data表中,請(qǐng)使用以下命令:
mysql> SELECT * FROM new_database.sensor_data WHERE id = 25;
這個(gè)命令將使用ID號(hào)25查詢新數(shù)據(jù)庫(kù),并將顯示該行是否存在。
現(xiàn)在,您已知道如何使用Shell命令復(fù)制一個(gè)數(shù)據(jù)庫(kù)行。這種方法可以適用于多種數(shù)據(jù)庫(kù),例如PostgreSQL等。您需要根據(jù)您正在使用的數(shù)據(jù)庫(kù)類型微調(diào)上述命令。如果您有更好的方法來復(fù)制數(shù)據(jù)庫(kù)行,請(qǐng)隨時(shí)在評(píng)論中分享。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220求一份shell腳本,需求是:從Oracle數(shù)據(jù)庫(kù)中提取一個(gè)表中的數(shù)據(jù)輸出到文件,并且每條記錄一行;
#!/bin/sh
sqlplus -s 數(shù)據(jù)庫(kù)用戶名/數(shù)據(jù)庫(kù)用戶密碼@SID X.txt#登錄數(shù)據(jù)庫(kù)輸出結(jié)果導(dǎo)向文件
set trimout on
set linesize 1000
select name||’,’||id||’,’||age||’,’||add from tb_XX
EOF
應(yīng)用spool命令,大量數(shù)據(jù)匯出很方便,腳本內(nèi)容大致如下:
–============================================
#!/bin/sh
#之一步
sqlplus -s 用戶名/密碼@服務(wù)名
spool customers.sql –輸出文件路徑及名稱
set trimspool on
set linesize 8000
set pagesize 50000
set newpage 1
set heading off
set term off
set feedback off
set sqlblankline off
SELECT A|| ‘|+|’ || –字段A
B|| ‘|+|’ || –字段B
C|| ‘|+|’ || –字段C
D|| ‘|+|’ || –字段D
E|| ‘|+|’ || –字段E
F|| ‘|+|’ || –字段F
G|| ‘|+|’ || –字段G
TO_CHAR(H,’YYYYMMDD HH:MM:SS’)|| ‘|+|’ –字段H,可以使用函數(shù)
FROM CUSTOMERS;–表名
spool off
exit
EOF
–=======================
其中’|+|’為分隔符,也可以換成你說的逗號(hào),即’,’。調(diào)用該腳本后,在根目錄下生成customers.sql文件。
如何使用shell腳本操作數(shù)據(jù)庫(kù)
首先你要安裝好相關(guān)庫(kù),如ubuntu下的mysql_client等,
然后你命令行怎么操作,shell就怎么操作,如:
mysql -u root -p
….
shell往mysql數(shù)據(jù)庫(kù)導(dǎo)入新
若要將大量的數(shù)據(jù)值插入到數(shù)據(jù)庫(kù)的一個(gè)或多個(gè)表中,使用insert into語(yǔ)句來實(shí)現(xiàn)將是一項(xiàng)無聊的工作。
1、LOAD DATA通過讀取本地文件系統(tǒng)上的文件,可以將大量數(shù)據(jù)添加到數(shù)據(jù)庫(kù)中。
mysql> LOAD DATA INFILE ‘datafile.txt’ INTO TABLE db2.table_name;
mysql> LOAD DATA INFILE ‘datafile.txt’ INTO TABLE db2.table_name FIELDS TERMINATED BY ‘,’ OPTIONAL ENCLOSED BY ‘”‘;
mysql> load data infile “鍵慎file.txt” into table table_name fields terminated by ‘\t’ (sid,name);
2、還有一個(gè)mysqlimport命令可以批量增加,mysqlimport直接從文件讀取批量數(shù)據(jù)。它相當(dāng)于LOAD DATA語(yǔ)句的一個(gè)接口。
mysqlimport可以自動(dòng)生成一個(gè)LOAD DATA語(yǔ)句,該語(yǔ)句把filename.txt文件中的數(shù)據(jù)裝入table_name表中。
mysqlimport根據(jù)文件名導(dǎo)入表名,即將文件名之一個(gè)圓點(diǎn)前的所有字符作為表名。例如,文件class.txt被裝入class表中。
例如:
mysqlimport -L -uroot -proot db01 table_name.txt;
mysqlimport -local table_name filename.txt;
3、datafile.txt內(nèi)容:
“1”,”a string”,”100.20″
“畝梁2”,”a string containing a , comma”,”102.20″
“3”,”a string containing a \” quote”,”稿耐敬102.20″
“4”,”a string containing a \”, quote and comma”,”102.20″
4、假如你有x表,導(dǎo)入了一個(gè)y表,將y表數(shù)據(jù)插入x表:
insert into x select * from y;
本文介紹 MySQL 8.0 shell 子模塊 Util 的兩個(gè)導(dǎo)入特性 importTable/import_table(和python 版本的命名差異)、importJson/import_json的使用方法。
其中 import_table 是通過傳統(tǒng) MySQL 協(xié)議來通信,Import_json 是通過 X 插件協(xié)議來通信。MySQL 一直以來提供導(dǎo)入文件 SQL 命令 load data infile(單線程)以及對(duì)應(yīng)的可執(zhí)行文件 mysqlimport(多線程)。
比如我導(dǎo)入 100W 行示例數(shù)據(jù)到表 ytt.tl1,花了 24 秒。這個(gè)已經(jīng)是 MySQL 默認(rèn)導(dǎo)入來的最快的。分析那我們現(xiàn)在看下 mysqlimport 工具的升級(jí)版,mysqlshell 的 util 工具集。
使用這兩個(gè)工具之前,必須得臨時(shí)開啟 local_infile 選項(xiàng)。1. import_table建立 3306 端口的新連接我這里切換為 python 模式清空掉示例表 Ytt.tl1import_table 有兩個(gè)參數(shù),之一個(gè)參數(shù)定義導(dǎo)入文件的路徑,第二個(gè)定義相關(guān)選項(xiàng),比如導(dǎo)入的格式,并發(fā)的數(shù)量等。定義文件路徑(參數(shù)1)定義選項(xiàng)(參數(shù)2)執(zhí)行導(dǎo)入:只花了不到 17 秒,比傳統(tǒng) mysqlimport 快了不少。
我們上面指定了顯式指定了字段分隔符,那有沒有已經(jīng)定義好的組合格式呢? 答案冊(cè)春是有的,選項(xiàng) dialect 可以指定以下格式:csv,tsv,改蘆json,csv-unix那么上面的導(dǎo)入,我們可以更簡(jiǎn)單,改下變量 y_options1 的定義導(dǎo)入時(shí)間差不多。這里要說明下,dialect 選項(xiàng)的優(yōu)先級(jí)比較低,比如添加了’linesTerminatedBy’:’\r\n’, 則覆蓋他自己的’\n’。
選項(xiàng) diaelect 還有一個(gè)可選值為 json,可以直接把 json 結(jié)果導(dǎo)入到文檔表里。比如我新建一張表 tl1_json重新定義文件以及導(dǎo)入選項(xiàng)。導(dǎo)入 ON 數(shù)據(jù)速度也還可以,不到 24 秒。那導(dǎo)入 json 數(shù)據(jù),就必須得提到以 X 插件協(xié)議通信的工具 import_json了。2. imort_json我們切換到 mysqlx 端口import_json 參數(shù)和 Import_table 參數(shù)類似,這里我改下選項(xiàng)我在手冊(cè)上沒有看到多線程的選項(xiàng),所以單線程跑核姿帶 35 秒慢了些。查看剛剛導(dǎo)入的數(shù)據(jù)import_json 不僅僅可以導(dǎo)入 Json 數(shù)據(jù),更重要的是可以在 BSON 和 ON 之間平滑的轉(zhuǎn)換,有興趣的同學(xué)可以去 TRY 下。
shell復(fù)制一行數(shù)據(jù)庫(kù)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于shell復(fù)制一行數(shù)據(jù)庫(kù),如何使用shell復(fù)制一行數(shù)據(jù)庫(kù)?,求一份shell腳本,需求是:從Oracle數(shù)據(jù)庫(kù)中提取一個(gè)表中的數(shù)據(jù)輸出到文件,并且每條記錄一行;,如何使用shell腳本操作數(shù)據(jù)庫(kù),shell往mysql數(shù)據(jù)庫(kù)導(dǎo)入新的信息別忘了在本站進(jìn)行查找喔。
成都創(chuàng)新互聯(lián)科技有限公司,經(jīng)過多年的不懈努力,公司現(xiàn)已經(jīng)成為一家專業(yè)從事IT產(chǎn)品開發(fā)和營(yíng)銷公司。廣泛應(yīng)用于計(jì)算機(jī)網(wǎng)絡(luò)、設(shè)計(jì)、SEO優(yōu)化、關(guān)鍵詞排名等多種行業(yè)!
新聞名稱:如何使用shell復(fù)制一行數(shù)據(jù)庫(kù)?(shell復(fù)制一行數(shù)據(jù)庫(kù))
URL分享:http://m.fisionsoft.com.cn/article/dpodohd.html


咨詢
建站咨詢
