苦於qa賬號,木有drop,truncate許可權,同步資料要挨個delete表裡邊的資料,就寫了個指令碼,迴圈刪除某個目標庫的所有表裡邊的資料。
先在information_schema的庫裡邊,通過tables的表(注意此處是大寫,後邊有些必須是大寫,自己可以去了解下這個資料庫的作用)去獲取目標資料庫中包涵那些表,然後通過迴圈逐個delete表中的資料,然後就可以同步資料了。
同步資料的時候需要注意:很多都是通過id自增列進行表連線的,但是如果新插入一列(不帶id),id會隨著增長,所以insert的時候,要把id帶上,通過mysqldump把資料匯出來,然後整個insert到目標庫。
#!/bin/bashhost="
你的資料庫host
"user="
你的資料庫密碼
"pwd="
beta庫的密碼
"constr="
mysql -h$host -u$user -p$pwd --database=information_schema
"#$constr -e "
use information_schema;
"constr2="
mysql -h$host -u$user -p$pwd --database=$1
"lista=$($constr -e "
select table_name from tables where table_schema='$1';")
echo
"starting.................
"for i in
$(echo $lista)
doif [[ $i == "
table_name
"]];then
continue
else
echo
"deleting the data of $i
"$constr2 -e "
delete from $i"fi
done
echo
"ending....................
"
簡單說下drop,delete,truncate。
drop:就是直接乾掉,一下子就木有了,表結構和資料都木有了,如果需要表,還需要自己crete,很快。
delete:只運算元據,逐行刪除,而且自增的id也不會消除,資料很多時很慢,但是delete的優點是可以根據某一條件進行刪除。
truncate:直接乾掉,並自動重新建表,資料都( _ )/~~拜拜了。
可以多了解了解mysql的infromation_schema和performance_schema庫的作用。
資料刪除 delete
資料刪除 在刪除的時候需要詢問是否真的需要刪除?同時在之後的專案中,刪除往往不是真的刪除,而是做刪除標記 語法 delete from 表名 where 條件 delete from teacher 刪除指定的人員資訊 delete from teacher where id 26 使用delete...
PostgreSQL 中如何delete重複資料
時常有這樣的case db例項執行一段時間後,發現需要給1個table中的某 些 欄位加unique 約束,但建立unique constraints 或 index 時,報出 detail key col value is duplicated 此時就需要先按照一定邏輯將重複資料僅保留1條,將冗餘...
恢復oracle資料delete的資料
1.flashback query 閃回到15分鐘前 select from orders as of timestamp systimestamp interval 15 minute where 這裡可以使用day second month替換minute,例如 select from orde...