红穆笔记
首页 程序笔记 pbootcms sqlite数据库转换为mysql数据库
程序笔记 PbootCms

pbootcms sqlite数据库转换为mysql数据库

pbootcms sqlite数据库转换为mysql数据库

为什么要转换为mysql数据库?

当数据库中的数据量达到万级别时,使用SQLite和MySQL会有以下区别:

  1. 性能:SQLite是一种嵌入式数据库,适用于轻量级应用程序,它使用磁盘文件存储数据,并且只有一个连接。相比之下,MySQL是一种完整的客户端/服务器关系型数据库管理系统,能够支持多个连接,并且具有更高的性能和扩展性。

  2. 并发访问:当多个用户同时访问数据库时,SQLite可能会出现锁定的情况,从而导致性能下降。MySQL使用行级锁定和读写锁定来处理并发访问,因此具有更好的性能和可伸缩性。

  3. 数据安全性:SQLite具有较小的安全风险,因为它不支持多用户访问,所有的访问都是通过一个进程进行的。MySQL提供了更强大的安全功能,包括用户身份验证、访问控制和数据加密等。

  4. 数据库容量:SQLite的数据库容量有限,通常适用于小型应用程序。相比之下,MySQL可以处理大容量的数据集,因此更适用于大型应用程序。

  5. 可扩展性:MySQL是一种可扩展性较强的数据库,可以使用分片等技术来处理大规模数据集。SQLite不具备这样的可扩展性。

综上所述,当数据量达到万级别时,MySQL通常是更好的选择,因为它具有更好的性能、并发访问能力、数据安全性和可扩展性。

如何选择两者数据库?

SQLite和MySQL是两种不同类型的数据库管理系统,各有其适用的场景。

SQLite:

  1. 轻量级应用程序:SQLite是一种嵌入式数据库,适用于轻量级应用程序,可以轻松集成到应用程序中,不需要独立的数据库服务器。

  2. 单用户应用程序:SQLite不支持多用户访问,所有的访问都是通过一个进程进行的,适合于单用户应用程序。

  3. 本地存储:SQLite使用磁盘文件存储数据,适合于本地存储和单机应用程序。

  4. 数据量较小:SQLite的数据库容量有限,适合于数据量较小的应用程序。

MySQL:

  1. 互联网应用程序:MySQL是一种客户端/服务器关系型数据库管理系统,适用于互联网应用程序,可以处理大容量的数据集和高并发访问。

  2. 多用户访问:MySQL支持多用户访问,具有并发访问能力和高性能,适合于多用户访问的应用程序。

  3. 数据量较大:MySQL可以处理大容量的数据集,适合于数据量较大的应用程序。

  4. 数据安全性要求高:MySQL提供了更强大的安全功能,包括用户身份验证、访问控制和数据加密等,适合于数据安全性要求高的应用程序。

综上所述,SQLite适用于轻量级应用程序、本地存储和单用户应用程序,而MySQL适用于互联网应用程序、多用户访问和数据量较大的应用程序。

pbootcms如何转换数据库?

pbootcms这个开源程序,使用的人也不少,我也在使用,但是由于很多时候,一开始就用的sqlite数据库,后来数据量大了后,发现mysql性能更好,所以想要转换数据库,但是这时却发现,sqlite数据库转换为MySQL的工具貌似并不好用!

我参考了网上很多人推荐的工具,SQLiteStudio应用程序或者是Navicat Premium ,效果并不好!

原因主要为,导出的数据库很不好,需要你手动删除转换的sql文件内的一些语句,或者是一些表的结构并没转换好!

究其种种原因,所以我决定抛弃上面的两种方法!

我选择PHP转换法!

思路很简单,将官网的sql文件导入数据库,然后清空所有表,这样就解决了sqlite转换mysql时,表结构的问题!

接下来,我利用PHP,同时链接mysql和sqlite数据库,将相同表的数据进行转换,将sqlite的数据获取,并生成insert语句,插入到mysql里面!

这样一来,便可以很好的将sqlite数据转换到mysql,并且数据完整,不会出现数据遗漏或者报错之类的,比软件转换快捷,而且转换效果更好!

转换的PHP代码为:

🔒 隐藏内容:会员可查看

<?php

// 配置 MySQL 数据库连接信息
$mysql_host = "localhost";
$mysql_username = "24qiutv24qiutv";
$mysql_password = "cnGekNxCka8AW4d";
$mysql_database = "24qiutv24qiutv";

// 配置 SQLite 数据库连接信息
$sqlite_file = "./iq470_cn_20d3e7c4a2911eca376c399217db598e.db";

// 配置 SQL 文件路径
$sql_file = "pbootcms_v324.sql";

// 连接 MySQL 数据库
$mysqli = new mysqli($mysql_host, $mysql_username, $mysql_password, $mysql_database);

// 检查连接是否成功
if ($mysqli->connect_error) {
    die("连接 MySQL 数据库失败:" . $mysqli->connect_error);
}

// 删除 MySQL 数据库的所有表
if ($mysqli->query("SHOW TABLES") !== false) {
    $tables = $mysqli->query("SHOW TABLES")->fetch_all();
    foreach ($tables as $table) {
        $table_name = $table[0];
        $mysqli->query("DROP TABLE $table_name");
    }
}

// 导入指定的 SQL 文件到 MySQL 数据库
$sql_content = file_get_contents($sql_file);
if ($mysqli->multi_query($sql_content) !== false) {
    do {
        $mysqli->store_result();
    } while ($mysqli->more_results() && $mysqli->next_result());
}

// 清空 MySQL 数据库的所有表数据
if ($mysqli->query("SHOW TABLES") !== false) {
    $tables = $mysqli->query("SHOW TABLES")->fetch_all();
    foreach ($tables as $table) {
        $table_name = $table[0];
        $mysqli->query("DELETE FROM $table_name");
    }
}

// 连接 SQLite 数据库
try {
    $pdo = new PDO("sqlite:" . $sqlite_file);
} catch (PDOException $e) {
    die("连接 SQLite 数据库失败:" . $e->getMessage());
}

// 检查连接是否成功
if (!$pdo) {
    die("连接 SQLite 数据库失败");
}

// 检查 SQLite 和 MySQL 是否有相同的表
if ($pdo->query("SELECT name FROM sqlite_master WHERE type='table'") !== false) {
    
    $tables = $pdo->query("SELECT name FROM sqlite_master WHERE type='table'")->fetchAll(PDO::FETCH_NUM);
    print_r($tables);
    
    foreach ($tables as $table) {
        $table_name = $table[0];
        if ($mysqli->query("SHOW TABLES LIKE '$table_name'")->num_rows > 0) {
            // 如果 MySQL 和 SQLite 存在相同的表,则将 SQLite 数据插入到 MySQL 对应表中
            $rows = $pdo->query("SELECT * FROM $table_name");
            while ($row = $rows->fetch(PDO::FETCH_ASSOC)) {
                $keys = implode(",", array_keys($row));
                $values = implode(",", array_map(function ($value) use ($mysqli) {
                    return "'" . $mysqli->real_escape_string($value) . "'";
                }, array_values($row)));
                $mysqli->query("INSERT INTO $table_name ($keys) VALUES ($values)");
                echo "INSERT INTO $table_name ($keys) VALUES ($values)";
            }
        }
    }
}

// 关闭数据库连接
$mysqli->close();
$pdo = null;

不懂PHP代码的不建议转换,加站长QQ,有偿帮助!

微信赞赏

微信

支付宝赞赏

支付宝

✍️ 作者: 红穆

网站管理员 · 感谢阅读,更多精彩内容敬请关注

作者主页 查看主页 →

相关文章

Pbootcms幻灯片代码

Pbootcms幻灯片代码 程序笔记 PbootCms

幻灯片调用例子:{pboot:slide num=3 gid=1} &lt;a href=&quot;[slide:link]&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;[slide:src]&quot; alt=&quot;[slid…
👁 179
pbootcms 网站留言功能的添加

pbootcms 网站留言功能的添加 程序笔记 PbootCms

留言板标签适用范围:全站任意地方均可使用标签作用:用于用户提交留言和调取留言记录1、留言提交表单&lt;form action=&quot;{pboot:msgaction}&quot; method=&quot;post&quot;&gt; 联系人:&lt;input type=&quot;tex…
👁 174
pbootcms引入公共文件代码

pbootcms引入公共文件代码 程序笔记 PbootCms

1、模板文件嵌套引用{include file=***.html}使用说明:可以嵌套使用,如:index.html 嵌套一个head.html,同时head.html中嵌套comm.html支持使用子目录,如:{include file=comm/*.html}2、时间格式化标签style=*如:内…
👁 235

推荐阅读

(自适应手机端)工商注册类网站pbootcms模板 财务代理记账网站源码下载 0343

(自适应手机端)工商注册类网站pbootcms模板 财务代理记账网站源码下载 0343 实用收藏 pbootcms模板

一款自适应手机端的工商注册与财务代理记账PbootCMS网站模板。设计风格简洁专业,适合财税公司展示记账报税、工商注册等一站式服务。有助于财务服务机构在线上建立品牌形象,获取企业客户。模板展示 安装说明 网站后台:/admin.php 账号:admin 密码:admin 解压密码:www.4s5.c…
👁 41
帝国cms 多条件查询之IN查询

帝国cms 多条件查询之IN查询 程序笔记 帝国cms

在帝国cms中,偶然需要用到in查询,也就是多条件查询中的:在使用这个的时候,发现IN查询并不能查询到我的结果,于是翻找PHP代码,发现下面的函数里需要修改!function SearchDoKeyboard($f,$hh,$keyboard){ // print_r($keyboard);echo…
👁 224
响应式轴承生产厂家类网站模板 0616

响应式轴承生产厂家类网站模板 0616 实用收藏 易优模板

此套eyoucms响应式模板适用于轴承生产厂家类行业,设计风格专业精密,能够展示轴承产品、技术参数及工业应用。有助于轴承制造企业在线上展示产品实力,吸引工业客户。模板展示 安装说明 网站后台:/login.php 账号:admin 密码:admin 相关文章易优CMS安装常见问题总结易优CMS(Ey…
👁 48
(自适应手机端)生活服务类网站模板 本地信息服务网站源码下载 1056

(自适应手机端)生活服务类网站模板 本地信息服务网站源码下载 1056 实用收藏 pbootcms模板

一款生活服务类与本地信息服务PbootCMS网站模板,支持PC与WAP端。设计风格清新实用,适合展示本地生活服务信息、分类广告及商家黄页。有助于本地信息平台在线上吸引用户与商家入驻。模板展示 安装说明 网站后台:/admin.php 账号:admin 密码:admin 解压密码:www.4s5.cn…
👁 56
(自适应手机端)广告品牌策划公司网站pbootcms模板 广告品牌策划设计公司网站源码下载 0345

(自适应手机端)广告品牌策划公司网站pbootcms模板 广告品牌策划设计公司网站源码下载 0345 实用收藏 pbootcms模板

本套自适应手机端的广告品牌策划与设计公司PbootCMS网站模板。设计风格创意营销,适合广告公司、品牌策划机构展示案例与创意能力。有助于广告公司在线上吸引品牌客户,拓展业务。模板展示 安装说明 网站后台:/admin.php 账号:admin 密码:admin 解压密码:www.4s5.cn相关文章…
👁 62