將sqlite3中數據導入到mysql中的實戰教程

最近因爲工作的需求,需要將sqlite3中的數據導入到mysql中去,發現網上的一些教程都不夠詳細,索性自己寫一篇,下面這篇文章主要給大家介紹了關於將sqlite3數據庫中的數據導入到mysql數據庫中的相關資料,需要的朋友可以參考下。

前言

sqlite3只小巧輕便,但是並不支持併發訪問,當網站併發量較大時候,數據庫請求隊列邊長,有可能導致隊列末尾去數據庫操作超時,從而操作失敗。因此需要切換到支持併發訪問的數據庫。切換數據庫需要將老的數據導出,再導入到新的數據庫中,但是sqlite3和mysql的數據庫並不完全兼容,需要做部分調整才能正常導入到mysql中。我最近工作中就遇到了這個問題。

最近一個項目中使用magenetico抓取磁力鏈接,由於它使用的是sqlite3, 文件會越來越大,而且不支持分佈式;所以需要將其改造成MySQL,在遷移之前需要將已經抓取的15G數據導入到MySQL,下面來一起看看詳細的介紹吧

方法如下:

從sqlite3文件dump出sql

sqlite3 database.sqlite3
sqlite3> .output /path/to/dump.sql
sqlite3> .dump
sqlite3> .exit

切分文件

文件比較大的時候,很有導入到一半的時候失敗,這個時候需要從失敗的行開始切分出一個新的sql文件來

awk '{if (NR>=6240863) print $0>"dump_part.sql"}' dump.sql

mysql參數修改

[mysqld]
max_allowed_packet = 100M

sql兼容, 符號替換

# 1. 刪除不包含 INSERT INTO 的行
# 2. 替換表名 wrap
# 3. 替換 hex
sed '/INSERT INTO/!d;s/"table1"/`table1`/;s/"table2"/`table2`/;s/,X/,/' dump.sql

導入到MySQL

# 加上 force 參數, 防止部分有問題的sql阻止導入
mysql -uroot -p -f magnet < dump.sql

引用

How To Use The SQLite Dump Command

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對神馬文庫的支持。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章