sqlite換成mysql_從SQLITE的數據轉到MYSQL

接同事需求,要求從SQLITE的數據轉到MYSQL,這東西以前也沒接觸過。這里搜搜,那里試試,下面把過程列一下。

主要過程分三步:

1,把SQLITE表結構導出來,作一定的格式調整

2,把SQLITE數據導出來,作特殊字符的處理

3,導出MYSQL(注意字符集)[@more@]

下面是我操作的過程, 有兩個部分:單表操作和批量處理(含腳本)

########### 單表操作 ####################

# 打開SQLITE DB

root> sqlite3 mig.db

# 查看表,可用用".help"獲得幫助

sqlite>.tables

# 導出數據表結構

sqlite>.output /tmp/heyf/createtable.sql

sqlite>.schema accounts_profile

# 調整建表語句格式, 把雙引號去掉,并加上MYSQL的建表約束。

root>sed 's/"/`/g' createtable.sql > create_onmysql.sql

root>sed -i -e 's/^);$/) engine=innodb default charset=utf8 collate=utf8_bin ;/g' create_onmysql.sql

root>sed -i 's/integer.*PRIMARY KEY/int NOT NULL auto_increment PRIMARY KEY/g' create_onmysql.sql

# sqlite中,為 INTEGER PRIMARY KEY 的字段將自動增加

root>sed -i 's/ text/ longtext/g' create_onmysql.sql

# sqlite中,text 最大長度為2G, 在MYSQL中需要改成longtext;

# 在MYSQL把表建上:

mysql -uroot -h127.0.0.1 --default-character-set=utf8 test < create_onmysql.sql

# 導出數據

sqlite>.mode insert accounts_profile_starred_review_requests

sqlite>.output /tmp/heyf/accounts_profile_starred_review_requests.sql

sqlite>select * from accounts_profile_starred_review_requests;

sqlite>.output stdout

# 處理特殊字符

DOTABLE=accounts_profile_starred_review_requests

cd /tmp/heyf

DOFILE=${DOTABLE}.sql

sed -e "s///g" $DOFILE > ${DOFILE}.new

# 將數據導入MYSQL

mysql -uroot -h127.0.0.1 --default-character-set=utf8 test -e "truncate table ${DOTABLE};"

mysql -uroot -h127.0.0.1 --default-character-set=utf8 test < ${DOFILE}.new

如果表很多:那我們就需要批量處理一下啦,下面是一些批量腳本 :

########### 批量處理 ####################

# 打開SQLITE DB

root> sqlite3 mig.db

# 查看表

sqlite>.tables

# 把所有表名都放入TABLE.LIST文件

# 導出數據表結構

sqlite>.output /tmp/heyf/createtable.sql

sqlite>.schema accounts_profile

sqlite>.schema ... ....

#在MYSQL 創建表結構

root>sed 's/"/`/g' createtable.sql > create_onmysql.sql

root>sed -i -e 's/^);$/) engine=innodb default charset=utf8 collate=utf8_bin ;/g' create_onmysql.sql

root>sed -i 's/integer.*PRIMARY KEY/int NOT NULL auto_increment PRIMARY KEY/g' create_onmysql.sql

# sqlite中,為 INTEGER PRIMARY KEY 的字段將自動增加

root>sed -i 's/ text/ longtext/g' create_onmysql.sql

# sqlite中,text 最大長度為2G, 在MYSQL中需要改成longtext;

root>mysql -uroot -h127.0.0.1 --default-character-set=utf8 test < /tmp/heyf/create_onmysql.sql

# SQLITE 中導出數據

## 將所有的表生成導出語句(SQLITE)

## cat create_exp.sh

-------------------------

#!/bin/bash

[ $# -ne 1 ] && exit 1

TABFILE=$1

WORKDIR=/tmp/heyf/dmpfile/

OUTFILE=exp.sql

while read LINE

do

echo $LINE

echo ".mode insert $LINE" >> $OUTFILE

echo ".output $WORKDIR/${LINE}.sql ">> $OUTFILE

echo "select * from $LINE ;" >> $OUTFILE

echo ".output stdout " >> $OUTFILE

done < $TABFILE

-------------------------

## 運行后將產生 sqlite 所有表的導出語句

sh create_exp.sh table.list

## 現在進行SQLITE可以將所有表的數據導出來。

sqlite3 /home/admin/foryunfei/heyf.db

.read /tmp/heyf/exp.sql

# 處理特殊字符

## 現在需要將所有的SQL文件中的""替換成”“,以使SQL能正確執行

## cat replace.sh

-------------------------

#!/bin/bash

[ $# -ne 1 ] && exit 1

TABFILE=$1

WORKDIR=/tmp/heyf/dmpfile/

while read DOTABLE

do

cd $WORKDIR

DOFILE=${DOTABLE}.sql

sed -e "s///g" $DOFILE > ${DOFILE}.new

done < $TABFILE

-------------------------

## sh replace.sh table.list

## 將數據導入MYSQL

## cat imp.sh

-------------------------

#!/bin/bash

[ $# -ne 1 ] && exit 1

TABFILE=$1

WORKDIR=/tmp/heyf/dmpfile/

while read DOTABLE

do

cd $WORKDIR

mysql -uroot -h127.0.0.1 --default-character-set=utf8 test -e "truncate table ${DOTABLE};"

mysql -uroot -h127.0.0.1 --default-character-set=utf8 test < ${DOTABLE}.sql.new

done < $TABFILE

-------------------------

## sh imp.sh table.list

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

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

相關文章

python學習筆記(一):python入門

上周六終于開始接觸心心念念的python了&#xff0c;本人學習語言算是零基礎&#xff0c;java語法比較復雜&#xff0c;所以選擇了一個語法相對還是比較簡單&#xff0c;而且現在使用也是越來越廣泛的python進行了學習。下面就言歸正傳吧 在學習python之前先來了解下現今比較流行…

MySQL查詢優化之explain的深入解析

在分析查詢性能時&#xff0c;考慮EXPLAIN關鍵字同樣很管用。EXPLAIN關鍵字一般放在SELECT查詢語句的前面&#xff0c;用于描述MySQL如何執行查詢操作、以及MySQL成功返回結果集需要執行的行數。explain 可以幫助我們分析 select 語句,讓我們知道查詢效率低下的原因,從而改進我…

怎么驗證proftpd安裝成功_英雄聯盟手游泰服安卓賬號怎么注冊

英雄聯盟手游中泰服安卓賬號怎么注冊&#xff1f;泰服安卓賬號的注冊流程是怎樣的&#xff1f;泰服安卓賬號的注冊與其他服安卓賬號的注冊是否一致&#xff1f;接下來就給介紹下手游中泰服安卓賬號的注冊&#xff0c;希望對各位玩家能有所幫助。英雄聯盟游戲新泰服安卓賬號怎樣…

oracle實現mysql的if_oracle中decode函數 VS mysql中的if函數和case函數

oracle中有decode函數&#xff0c;如下&#xff1a;select sum(decode(sex&#xff0c;男&#xff0c;0,1)) 男生數 from school&#xff1b;統計男生數目&#xff0c;含義為&#xff1a;decode()中sex字段為男時&#xff0c;用1代替&#xff0c;然后計算總和而mysql中沒有該函…

mysql 刪掉重復數據

--不知道為啥這個mysql外邊還要包一層&#xff0c;不然就報錯DELETE FROMcourse WHEREname IN ( select mm.name from (SELECTa.name as nameFROMcourse aGROUP BYa. NAMEHAVINGcount(a.NAME) > 1)mm) AND id NOT IN ( select nn.id from (SELECTmin(id) as idFROMcours…

spring中用到哪些設計模式

1.工廠模式&#xff0c;這個很明顯&#xff0c;在各種BeanFactory以及ApplicationContext創建中都用到了&#xff1b; 2.模版模式&#xff0c;這個也很明顯&#xff0c;在各種BeanFactory以及ApplicationContext實現中也都用到了&#xff1b; 3.代理模式&#xff0c;在Aop實現中…

visio對象放入word顯示不全_辦公人士必學visio技能 手把手教你使用visio繪制項目全景圖!...

Hi,大家好&#xff01;我是愛踢汪。今天本汪想問問你用什么總結項目&#xff0c;Word、PPT還是視頻&#xff1f;下面我們聊聊畫圖。畫圖固然是為了好看&#xff0c;視覺上的沖擊加深印象。更重要的是&#xff0c;圖像模型帶來的“潛臺詞”&#xff0c;有意想不到的效果&#xf…

java 回調函數很好懂

首先先介紹回調函數的概念。比如客戶端client&#xff0c;想要調用服務器端server的某個函數為你提供服務。比如炒西紅柿炒蛋&#xff0c;cookTomato() 這時候&#xff0c;服務器端說&#xff0c;你先付錢才能為你服務&#xff0c;這時候服務器端要調用客戶端的getMoney().才能…

mongoDB操作詳細

簡介 它和我們使用的關系型數據庫最大的區別就是約束性,可以說文件型數據庫幾乎不存在約束性,理論上沒有主外鍵約束,沒有存儲的數據類型約束等等 關系型數據庫中有一個 "表" 的概念,有 "字段" 的概念,有 "數據條目" 的概念 MongoDB中也同樣有以上…

mysql 存儲過程 on_MySQL存儲過程的權限問題小結

MySQL的存儲過程&#xff0c;沒錯&#xff0c;看起來好生僻的使用場景。問題源于一個開發同學提交了權限申請的工單&#xff0c;需要開通一些權限。本來是一個很正常的操作&#xff0c;但在我來看是比較著急且緊迫的&#xff0c;說來慚愧&#xff0c;忙著方向規劃和開發的事情&…

搜索引擎蜘蛛爬蟲原理

permike 原文 搜索引擎蜘蛛爬蟲原理 關于搜索引擎的大話還是少說些&#xff0c;下面開始正文搜索引擎蜘蛛爬蟲原理&#xff1a; 1 聚焦爬蟲工作原理及關鍵技術概述 網絡爬蟲是一個自動提取網頁的程序&#xff0c;它為搜索引擎從Internet網上下載網頁&#xff0c;是搜索引擎的重…

《Android開發藝術探索》讀書筆記 (10) 第10章 Android的消息機制

第10章 Android的消息機制 10.1 Android消息機制概述 (1)Android的消息機制主要是指Handler的運行機制&#xff0c;其底層需要MessageQueue和Looper的支撐。MessageQueue是以單鏈表的數據結構存儲消息列表但是以隊列的形式對外提供插入和刪除消息操作的消息隊列。MessageQueue只…

mysql索引引擎_mysql搜索引擎和索引那些事

mysql的存儲引擎三種存儲方式**InnoDB **(默認)一個文件存儲表結構&#xff0c;一個存儲數據和目錄(索引)# 一個文件 book_name | author| press | price | pub_date frm文件 frame的縮寫# 另一個文件(數據 目錄)# | 倚天屠龍記 | egon | 北京工業地雷出版社 | 70.00 | 2019-07…

SPOJ HIGH Highways ——Matrix-Tree定理 高斯消元

【題目分析】 Matrix-Tree定理高斯消元 求矩陣行列式的值&#xff0c;就可以得到生成樹的個數。 至于證明&#xff0c;可以去看Vflea King&#xff08;炸樹狂魔&#xff09;的博客 【代碼】 #include <cmath> #include <cstdio> #include <cstring> #include…

深度ip轉換器手機版app_房串串經紀人版app下載-房串串經紀人版app手機版 v1.0.0...

房串串經紀人版app&#xff1a;專門為房產經紀人打造的輔助辦公軟件&#xff0c;提供的功能非常的全面&#xff0c;涵蓋了房產服務過程中的各個環節&#xff0c;隨時可以手機在線處理自己的日常工作&#xff0c;提高了工作的效率&#xff0c;操作很簡單&#xff0c;讓你更好的實…

netduino之電源參考電路MC33269DT-5.0G

手里有塊netduino的板子&#xff0c;一直閑置未用&#xff0c;netduino具體是什么不知道的就百度吧&#xff0c;我這也不是主要講netduino開發的&#xff0c;簡單說就是用.net開發硬件&#xff0c;了解到netduino也是原來學過C#&#xff0c;當然我主要的工作還是嵌入式硬件開發…

漢王考勤 連接mysql_漢王考勤管理軟件打開時出現:連接數據錯誤,請確認數據庫服務器信息是否有誤。這樣該怎樣解決?...

漢王指紋考勤系統故障答疑1. 考勤鐘上的指紋記錄丟失了。答&#xff1a;沒有可能自己丟失&#xff0c;只可能是誤刪除了指紋信息&#xff0c;只能重新登錄指紋。2. 在預處理時時間過長。答&#xff1a;由于用戶單位的人員多&#xff0c;軟件設置的班次亂等因素造成&#xff1b;…

PowerShell使用教程

一、說明 1.1 背景說明 個人對PowerShell也不是很熟悉&#xff0c;開始的時候就突然看到開始菜單中多了個叫PowerShell的文件夾&#xff0c;后來一點就看到某個教程視頻說PowerShell很厲害但也沒怎么聽&#xff0c;再后來就看到kali也有了一些PowerShell的腳本這才意識到PowerS…

python Gunicorn

1. 簡介 Gunicorn(Green Unicorn)是給Unix用的WSGI HTTP 服務器&#xff0c;它與不同的web框架是非常兼容的、易安裝、輕、速度快。 2. 示例代碼1 def app(environ, start_response):data b"Hello World\n"start_response("200 OK", [("Content-Type…

如何使處于不同局域網的計算機實現遠程通信_小區自來水二次加壓泵站遠程監控系統方案...

一、小區自來水二次加壓泵站遠程監控系統方案項目概述隨著城市高效快速地發展&#xff0c;市區規模越來越大&#xff0c;小區二次加壓泵房將繼續增加&#xff0c;供水公司二次加壓泵房管理工作將更加繁重。目前小區二次加壓供水方式主要有兩種&#xff0c;一種是不銹鋼水箱不銹…