SQLite 数据库到 SQL 转储转换器
将 SQLite 数据库文件转换为 SQL 转储文本脚本,可将二进制数据库转换为可读的文本命令,以便于数据库迁移和服务器导入。
格式比较与技术规格
| 规格 | SQLITE | SQL |
|---|---|---|
| MIME 类型 | application/vnd.sqlite3 | text/plain |
| 类型 | embedded relational database | relational schema & query script |
| 压缩 | B-Tree page allocation | none (plain text DDL/DML script) |
| 标准规范 | SQLite Database File Format 3 | ISO/IEC 9075 SQL Standard |
| 魔数文件头 (Magic Bytes) | 53 51 4C 69 74 65 20 66 6F 72 6D 61 74 20 33 00 (SQLite format 3\0) | 2D 2D (--) or CREATE TABLE SQL statement |
格式概述与应用
SQLite 将整个关系数据库存储在一个独立的二进制文件中。开发人员和系统管理员经常需要将数据从本地 SQLite 应用程序移动到 MySQL 或 PostgreSQL 等更大的服务器系统。由于服务器数据库无法直接读取 SQLite 二进制文件,因此将该文件更改为 SQL 脚本可以解决此问题。SQL 脚本包含纯文本指令,这些指令在新的服务器上运行时会重新创建表、添加索引并插入数据。 在将 Web 应用程序从测试环境移动到实时生产服务器时,此转换工作流很常见。软件工程师还使用 SQL 文本脚本进行长期数据归档。即使特定的数据库软件过时,纯文本文件也可以在数十年内保持可读性。从二进制数据库生成 SQL 脚本使开发人员能够使用基本文本编辑器和 Git 等版本控制工具来检查数据更改。
技术规格与编解码器解析
SQLite 数据库(MIME 类型 application/vnd.sqlite3)以一个独特的 16 字节魔数头部开始,该头部与文本字符串"SQLite format 3\000"匹配。该文件使用 B-Tree 页面分配系统以二进制格式组织表和索引。相比之下,SQL 转储(MIME 类型 text/plain)不包含二进制魔数字节。它是一个未压缩的 ASCII 或 UTF-8 文本文件,其中充满了诸如 CREATE TABLE 之类的标准数据定义语言命令和诸如 INSERT INTO 之类的数据操作语言命令。在它们之间进行转换需要读取二进制 B-Tree 页面并打印出文本语句。
操作系统与浏览器兼容性
SQLite 文件在数据库浏览器、移动应用程序以及 Python 或 PHP 脚本中原生打开。SQL 文本转储在诸如 Notepad 或 TextEdit 之类的任何基本文本编辑器中打开,并在包括 MySQL、PostgreSQL 和 Microsoft SQL Server 在内的主要关系数据库引擎上运行。由于 SQL 转储是纯文本,因此它们在 Windows、macOS、Linux、iOS 和 Android 上通用,无需特殊的数据库驱动程序。
💡 实用信息
始终使用 UTF-8 编码导出 SQL 转储,以防止在跨不同操作系统传输特殊符号或非英文文本时出现字符损坏。
格式比较与技术规格
50 MB 的 SQLite 二进制数据库文件在变成未压缩的 55 MB 文本 SQL 转储时会略微缩小或扩大。在下载速度为每秒 30 兆比特的标准 4G 移动网络上,传输此文本文件大约需要 15 秒。在快速的 5G 连接上,它在不到 3 秒的时间内传输完毕,而高速光纤连接则几乎瞬间在不到 1 秒的时间内移动文件。
常见问题
如何在不失真的情况下将 SQLite 数据库转换为 SQL 转储?
此转换完全是无损的,因为这两种格式存储完全相同的关系表、行和列。在文本导出过程中,没有任何数据值、类型或约束被破坏或丢弃。
SQLite 数据库和 SQL 转储之间有什么区别?
SQLite 数据库是一个二进制文件,它组织成固定大小的页面,并使用 B-Tree 进行快速本地查询。SQL 转储是一个纯文本脚本,包含人类可读的数据库命令,用于在另一台服务器上重建数据库。