猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
将SQLite3迁移到MySQL的快速简便方法?
将SQLite3迁移到MySQL的快速简便方法?
有人知道将SQLite3数据库迁移到MySQL的快捷方法吗?
有只小跳蛙
浏览 1328
回答 3
3回答
qq_花开花谢_0
每个人似乎从一些greps和perl表达式开始,你有点得到一些适用于你的特定数据集的东西,但你不知道它是否正确导入数据。我很惊讶没有人建立一个可以在两者之间转换的可靠库。这里列出了我在两种文件格式之间所知的SQL语法的所有差异:以以下列开头的行:开始交易承诺sqlite_sequence创建独特的索引在MySQL中没有使用SQLlite使用CREATE TABLE/INSERT INTO "table_name"和MySQL使用CREATE TABLE/INSERT INTO table_nameMySQL不在架构定义中使用引号MySQL在INSERT INTO子句中使用单引号作为字符串SQLlite和MySQL有不同的方法来转义INSERT INTO子句中的字符串SQLlite使用't'和'f'用于布尔值,MySQL使用1和0(当你有一个字符串时,一个简单的正则表达式可能会失败:'我做,你不在你的内部INSERT INTO)SQLLite使用AUTOINCREMENT,MySQL使用AUTO_INCREMENT这是一个非常基本的被破解的perl脚本,它适用于我的数据集,并检查我在网上找到的其他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; }}
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
MySQL
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续