若要实现成功迁移要保证:
1.服务器端创建Mysql数据库的时候要讲究 1, 不要加注记(因为我的java程序没有去处理,注记也叫注视) 2、编码为UTF-8
2.利用工具生成.sql文件.需要更改的地方有:
1. SET FOREIGN_KEY_CHECKS=0; 该句需要删除
2. .sql文件定义主键是:
CREATE TABLE `dishes` (
`id` int(11) NOT NULL AUTO_INCREMENT,….. ,PRIMARY KEY (`id`));
在SQLite中只要写int(11) PRIMARY KEY NOT NULL 即可实现autoincrement
3. ENGINE=InnoDB AUTO_INCREMENT=111 DEFAULT CHARSET=utf8 这句话不能要
4. COMMENT (注记) 之后的内容,包括它都不能要
举个例子吧
/*
MySQL Data Transfer
Source Host: 192.168.1.151
Source Database: test
Target Host: 192.168.1.151
Target Database: test
Date: 2011-8-31 18:00:18
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for dishes
-- ----------------------------
DROP TABLE IF EXISTS `dishes`;
CREATE TABLE `dishes` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`d_enname` varchar(255) NOT NULL,
`d_name` varchar(255) NOT NULL,
`d_price` float NOT NULL,
`d_image` varchar(255) DEFAULT NULL,
`d_taste` varchar(255) NOT NULL,
`d_cook` varchar(255) NOT NULL,
`d_spiciness` int(11) NOT NULL DEFAULT '0',
`d_calories` int(11) NOT NULL DEFAULT '0',
`d_time` int(11) NOT NULL DEFAULT '0',
`mc_id` int(11) NOT NULL,
`mt_id` int(11) NOT NULL,
`mit_id` int(11) NOT NULL,
`d_ingredients` varchar(255) NOT NULL,
`r_id` int(11) DEFAULT '0',
`version_id` int(11) DEFAULT '0',
`d_content` varchar(255) DEFAULT NULL,
`discount_price` float DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=111 DEFAULT CHARSET=utf8;
红色的部分,包括倒数第三行那个"," 都需要删掉或者修改的。改动以后的结果是:
/*
MySQL Data Transfer
Source Host: 192.168.1.151
Source Database: test
Target Host: 192.168.1.151
Target Database: test
Date: 2011-8-31 18:00:18
*/
-- ----------------------------
-- Table structure for dishes
-- ----------------------------
DROP TABLE IF EXISTS `dishes`;
CREATE TABLE `dishes` (
`id` int(11) PRIMARY KEY NOT NULL,
`d_enname` varchar(255) NOT NULL,
`d_name` varchar(255) NOT NULL,
`d_price` float NOT NULL,
`d_image` varchar(255) DEFAULT NULL,
`d_taste` varchar(255) NOT NULL,
`d_cook` varchar(255) NOT NULL,
`d_spiciness` int(11) NOT NULL DEFAULT '0',
`d_calories` int(11) NOT NULL DEFAULT '0',
`d_time` int(11) NOT NULL DEFAULT '0',
`mc_id` int(11) NOT NULL,
`mt_id` int(11) NOT NULL,
`mit_id` int(11) NOT NULL,
`d_ingredients` varchar(255) NOT NULL,
`r_id` int(11) DEFAULT '0',
`version_id` int(11) DEFAULT '0',
`d_content` varchar(255) DEFAULT NULL,
`discount_price` float DEFAULT NULL);
这样的.sql文件可以使用SQLite Expert 直接导入sql文件(前提是你已经自己创建了一个数据库).
OK,那些表已经完全迁移过来了。
另外,附着我写的关于自动修改该.sql文件代码如下,(注意源文件要改名为test.sql,目标文件为result.sql,放在E盘下,当然自己可以手动去改)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
public class ConvertScript {
/**
* @param args
*/
public static void main(String[] args) {
try {
read("E:/test.sql","E:/result.sql");
} catch (Exception e) {
e.printStackTrace();
}
}
public static void read(String sourcePath,String destionPath) throws Exception {
InputStreamReader read = new InputStreamReader (new FileInputStream(new File(sourcePath)), "UTF-8");
FileWriter fw = new FileWriter(new File(destionPath));
BufferedReader reader = new BufferedReader(read);
BufferedWriter writer = new BufferedWriter(fw);
String s = null;
StringBuilder sb = new StringBuilder();
while((s = reader.readLine()) != null) {
String replace = null;
String result = null;
if(s.contains("SET FOREIGN_KEY_CHECKS=0;")) {
replace = "SET FOREIGN_KEY_CHECKS=0;";
result = "\r\n";
} else if(s.contains("NOT NULL AUTO_INCREMENT")) {
replace = "NOT NULL AUTO_INCREMENT";
result = "PRIMARY KEY NOT NULL";
} else if(s.contains("PRIMARY KEY (`id`)")) {
replace = "";
} else if(s.contains("ENGINE=InnoDB AUTO_INCREMENT") || s.contains(") ENGINE=InnoDB DEFAULT CHARSET=utf8")) {
s = ");";
}
if(s.equals(");")) {
String resultStr = sb.toString();
sb = new StringBuilder();
sb.append(resultStr.substring(0, resultStr.lastIndexOf(",")));
}
if(replace != null && result != null)
s = s.replace(replace, result);
if(!"".equals(replace)) {
sb.append(s).append("\r\n");
}
}
System.out.println(sb.toString());
writer.write(sb.toString());
reader.close();
writer.close();
}
}
分享到:
相关推荐
标题 "pbootcms数据sqlite转mysql数据库" 涉及的是一个常见的数据库迁移过程,从SQLite数据库系统转换到MySQL数据库系统。这个过程在网站或应用的开发和维护中经常遇到,尤其是在更换数据库服务或者需要更强大的...
【Java代码 MySql导出到SqlLite】是一种技术实践,它涉及到使用Java编程语言来实现一个功能,该功能能够将MySQL数据库中的数据高效地导出到SQLite数据库文件中。这一过程通常用于数据迁移、备份或者在不同环境之间...
在进行数据库迁移时,需要注意的是,由于SQLite与MySQL之间可能存在数据类型不匹配的问题,`sqlite3-to-mysql`库会自动尝试进行适配。然而,某些特定的数据类型可能需要用户手动调整,例如SQLite的`TEXT`类型在MySQL...
MySQL到SQLite的异构数据转换是一项常见的任务,特别是在Android开发中,由于SQLite是Android系统内置的轻量级数据库,而MySQL则常用于服务器端。这个压缩包文件“mysql2sqlite异构数据转.rar”提供了实现这种同步的...
1. **免配置**:SQLite数据库作为一个独立的文件存在,只需将其通过FTP上传到服务器,即可开始使用,无需额外的服务器支持。 2. **备份简单**:由于数据库就是一个文件,备份只需复制这个文件即可。 3. **大容量**:...
通过本章的学习,学生将能够熟练运用SQLite解决实际问题,为今后的Linux高级系统编程项目提供强大的数据存储支持。同时,理解SQLite的工作原理也有助于理解其他数据库系统,提升整体的数据库应用能力。
3. **便携性**:SQLite数据库文件可随WordPress安装文件一起复制,便于备份和迁移。 4. **资源消耗少**:相比于MySQL,SQLite占用更少的内存和CPU资源,对服务器硬件要求较低。 **集成SQLite的步骤** 1. **准备PDO...
1. **轻量级**:SQLite数据库体积小,无需额外服务器,易于部署和迁移。 2. **独立性**:可以嵌入到应用程序中,减少依赖,降低运维复杂性。 3. **事务支持**:支持ACID(原子性、一致性、隔离性和持久性)事务,...
在将SQLite3数据库迁移至MySQL的过程中,可能会遇到一系列问题,这些问题主要集中在语法差异、数据格式兼容性、特殊字符处理以及效率方面。以下是对这些问题的详细分析及解决方案: 1. **SQLite3特有的语句在MySQL...
它支持多种主流数据库系统,包括MySQL、PostgreSQL、Cassandra和SQLite,这使得它成为一个灵活且跨平台的解决方案。 首先,让我们详细了解Go-migrate的工作原理。数据库迁移通常涉及对数据库结构的变更,如添加或...
Go-pravasan是一款基于Go语言开发的轻量级数据库迁移工具,主要针对MySQL数据库,但开发者计划在未来扩展其兼容性,以支持Postgres、SQLite和MongoDB等其他流行数据库系统。在软件开发过程中,数据库迁移是至关重要...
通过阅读这本“中文SQLite参考书册”,开发者可以深入理解SQLite的工作原理,学习如何高效地使用SQLite来设计和管理数据库,解决实际开发中的问题。无论你是初学者还是经验丰富的开发者,这本书都会是你宝贵的参考...
1. 数据库迁移:如果你的网站已经在使用MySQL,转换到SQLite可能需要数据迁移。确保你有数据库备份,并使用合适的工具进行迁移,如PHP脚本或专门的数据迁移插件。 2. 兼容性:虽然大多数WordPress插件和主题与SQLite...
pgloader作为一款强大的异构数据库迁移工具,特别适用于将MySQL数据库的数据迁移到PostgreSQL中。本文将详细介绍pgloader的安装、部署以及迁移过程,帮助你顺利进行数据库迁移。 一、pgloader安装与部署 pgloader...
综上所述,"mysql数据工具(含密钥)"中的Navicat是一个强大的数据库管理解决方案,它简化了MySQL的使用,提供了便捷的操作和丰富的功能,无论是数据库设计、数据管理还是性能优化,都是MySQL用户不可或缺的利器。...
嵌入式数据库正好解决了这一问题。它们的特点在于不需要独立运行的数据库引擎,而是通过程序直接调用API来实现数据的存取操作。这种设计不仅简化了部署流程,还显著减少了系统的占用空间。此外,嵌入式数据库的体积...
然而,有时我们需要将这些SQLite数据库迁移到更复杂的数据库系统,如SQL Server 2008,这是一个功能强大的企业级数据库管理系统,适合大型应用程序和多用户环境。或者,我们可能需要将数据导入到MySQL,一个流行的...
在本书的第11.5节中为读者介绍了SQLite数据库,与MySQL相比SQLite数据库使用更为方便。因为其不需要配置、不需要安装也不需要管理员,只需要提供一个数据库文件即可。而且SQLite的迁移也更为方便,只需要把相关的...
Phinx支持多种数据库系统,包括MySQL、PostgreSQL、SQLite和SQL Server等,这使得它成为一个非常通用的解决方案。通过使用Phinx,开发者可以在数据库层面进行版本控制,例如创建新的表、修改已有表的结构、添加索引...
为了解决这一问题,教程介绍了SQLAlchemy-migrate工具,这是一个数据库迁移的解决方案,允许开发者在数据库结构变更时进行版本控制,而不需要手动迁移数据。 在配置部分,教程指导我们如何配置Flask应用程序使用...