亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將SQLite3遷移到MySQL的快速簡便方法?

將SQLite3遷移到MySQL的快速簡便方法?

有只小跳蛙 2019-08-09 14:39:20
將SQLite3遷移到MySQL的快速簡便方法?有人知道將SQLite3數據庫遷移到MySQL的快捷方法嗎?
查看完整描述

3 回答

?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

每個人似乎從一些greps和perl表達式開始,你有點得到一些適用于你的特定數據集的東西,但你不知道它是否正確導入數據。我很驚訝沒有人建立一個可以在兩者之間轉換的可靠庫。

這里列出了我在兩種文件格式之間所知的SQL語法的所有差異:以以下列開頭的行:

  • 開始交易

  • 承諾

  • sqlite_sequence

  • 創建獨特的索引

在MySQL中沒有使用

  • SQLlite使用CREATE TABLE/INSERT INTO "table_name"和MySQL使用CREATE TABLE/INSERT INTO table_name

  • MySQL不在架構定義中使用引號

  • MySQL在INSERT INTO子句中使用單引號作為字符串

  • SQLlite和MySQL有不同的方法來轉義INSERT INTO子句中的字符串

  • SQLlite使用't''f'用于布爾值,MySQL使用10(當你有一個字符串時,一個簡單的正則表達式可能會失?。?#39;我做,你不在你的內部INSERT INTO

  • SQLLite使用AUTOINCREMENT,MySQL使用AUTO_INCREMENT

這是一個非?;镜谋黄平獾膒erl腳本,它適用于我的數據集,并檢查我在網上找到的其他perl腳本的更多這些條件。Nu保證它會為您的數據工作,但可以隨時修改并回復此處。

#! /usr/bin/perlwhile ($line = <>){
    if (($line !~  /BEGIN TRANSACTION/) && ($line !~ /COMMIT/) && ($line !~ /sqlite_sequence/) && ($line !~ /CREATE UNIQUE INDEX/)){

        if ($line =~ /CREATE TABLE \"([a-z_]*)\"(.*)/){
            $name = $1;
            $sub = $2;
            $sub =~ s/\"//g;
            $line = "DROP TABLE IF EXISTS $name;\nCREATE TABLE IF NOT EXISTS $name$sub\n";
        }
        elsif ($line =~ /INSERT INTO \"([a-z_]*)\"(.*)/){
            $line = "INSERT INTO $1$2\n";
            $line =~ s/\"/\\\"/g;
            $line =~ s/\"/\'/g;
        }else{
            $line =~ s/\'\'/\\\'/g;
        }
        $line =~ s/([^\\'])\'t\'(.)/$1THIS_IS_TRUE$2/g;
        $line =~ s/THIS_IS_TRUE/1/g;
        $line =~ s/([^\\'])\'f\'(.)/$1THIS_IS_FALSE$2/g;
        $line =~ s/THIS_IS_FALSE/0/g;
        $line =~ s/AUTOINCREMENT/AUTO_INCREMENT/g;
        print $line;
    }}


查看完整回答
反對 回復 2019-08-09
  • 3 回答
  • 0 關注
  • 1356 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號