跳到正文

将 Excel 转换为 MariaDB

拖入你的 Excel 文件,即可得到包含 CREATE TABLE 和 INSERT 语句的 MariaDB 脚本。每列都会获得类型,每处修正都会连同所在行和列一起列出。

你的文件
xlsxclientes_2024.xlsx示例文件,7 kB
你的数据库

已转换 4 行,10 处修正,无拒绝

显示
clientes_2024.xlsx 的前几行,每处修正都已标出
行
500127Peña Muñoz0123403/02/2024sí1.234,50
600128José Ángel0987015/02/2024noN/A
700129Zoë Ortíz4410029/02/2024sí-12,00
800130Ñuño Castañeda0670011/03/2024no980,75
-- Written by IntoSQL for MariaDB.

SET NAMES utf8mb4;
SET SESSION sql_mode = REPLACE(@@sql_mode, 'NO_BACKSLASH_ESCAPES', '');
START TRANSACTION;

CREATE TABLE clientes_2024 (
    no_cliente varchar(8) NOT NULL COMMENT 'Nº Cliente',
    nombre varchar(16) NOT NULL,
    c_p varchar(8) NOT NULL COMMENT 'C.P.',
    alta date NOT NULL,
    activo tinyint(1) NOT NULL,
    saldo decimal(6,2)
) DEFAULT CHARSET=utf8mb4;

INSERT INTO clientes_2024 (no_cliente, nombre, c_p, alta, activo, saldo) VALUES
('00127', 'Peña Muñoz', '01234', '2024-02-03', TRUE, 1234.50),
('00128', 'José Ángel', '09870', '2024-02-15', FALSE, NULL),
('00129', 'Zoë Ortíz', '44100', '2024-02-29', TRUE, -12.00),
('00130', 'Ñuño Castañeda', '06700', '2024-03-11', FALSE, 980.75);

COMMIT;

修正

  1. 表头在第 4 行;其上方的行未包含在内。
  2. 第 9 行("TOTAL")是合计行,因此未包含在内。
  3. 列 "Nº Cliente" 已改名为 no_cliente,这样 MariaDB 无需引号即可读取。
  4. 列 "C.P." 已改名为 c_p,这样 MariaDB 无需引号即可读取。
  5. 已保留 "Nº Cliente" 中的前导零:00127 仍为 00127,以文本存储。
  6. 已保留 "C.P." 中的前导零:01234 仍为 01234,以文本存储。
  7. 15/02/2024 证明 "Alta" 中的日期是日在前,因此 03/02/2024 读作 2024‑02‑03。
  8. "Activo" 包含是/否类词语(sí, no),已存储为布尔值。
  9. "Saldo" 中的数字使用小数逗号:1.234,50 读作 1234.50。
  10. "Saldo" 中的 N/A 已读作空值(4 个值中有 1 个)。

文件在这台电脑上转换,永远不会上传。

其他示例:

从 Excel 到 MariaDB,逐列说明

上方的示例 clientes_2024.xlsx 由 IntoSQL 为 MariaDB 写出的结果:每列在文件中的内容、获得的类型,以及第一个值在脚本中的写法。

文件中第一个值列MariaDB 类型脚本中
Nº Cliente00127no_clientevarchar(8)'00127'
NombrePeña Muñoznombrevarchar(16)'Peña Muñoz'
C.P.01234c_pvarchar(8)'01234'
Alta03/02/2024altadate'2024-02-03'
Activosíactivotinyint(1)TRUE
Saldo1.234,50saldodecimal(6,2)1234.50

将脚本导入 MariaDB

下载的是普通的 .sql 文件。用 MariaDB 自带的工具运行即可。

在终端中

mariadb --default-character-set=utf8mb4 mydb < clientes_2024.mariadb.sql

脚本自身已设置 utf8mb4;该参数让客户端以相同方式发送,因此重音字符完整保留。

在数据库工具中

在 HeidiSQL 或 DBeaver 中打开脚本并运行。

不使用脚本Pro

IntoSQL Pro 可以通过桌面应用或命令行将文件直接导入 MariaDB,无需生成脚本。

intosql load clientes_2024.xlsx --into mariadb://user@localhost/mydb

关于 Excel 文件和 MariaDB 需要了解的内容

IntoSQL 如何读取 Excel 文件

  • 即使表头行上方有标题或备注,也能找到表头行,末尾的合计行会被排除。
  • 以 Excel 序列号存储的日期会变成真正的日期,1900 和 1904 两种日期系统都支持。
  • 带前导零的代码(如 00127)保持为文本。工作簿有多个工作表时,由你选择工作表。

关于 MariaDB 需要了解的内容

  • 是与否的值变为 tinyint(1)。不超过 255 个字符的文本为 varchar;更长的文本按大小使用 text、mediumtext 或 longtext。
  • 脚本使用 utf8mb4 并设置 SQL 模式,因此重音字符、emoji、反斜杠和换行都会按原样导入。
  • MariaDB 的 datetime 不存储时区。

各类值在 MariaDB 中的存储方式

值MariaDB
是与否tinyint(1)
整数int
大整数bigint
小数decimal(p,s)double
浮点数double
日期date
时刻time(6)time
带时间的日期datetime(6)datetime
带时间和时区偏移的日期datetime(6)datetime
文本varchar(n)textmediumtextlongtext

关于 Excel 转 MariaDB 的问题

这里没有你要的答案?请通过联系页面给我们留言,会有专人回复。 联系页面

如何将 Excel 转换为 MariaDB?

将文件拖到本页顶部的转换器上。它会找到表头、读取每个值并写出 MariaDB 脚本,同时列出每处修正。下载脚本后用 the mariadb client 运行。

会转换工作簿中的哪个工作表?

第一个可见的工作表。工作簿有多个工作表时,会出现"工作表"选项,你可以选择其他工作表。

它使用哪些 MariaDB 类型?

是/否值变为 tinyint(1),整数变为 int,小数变为 decimal(p,s),日期变为 date,带时间的日期变为 datetime(6),文本变为 varchar(n)。长度取自每列中最长的值。

在 MariaDB 中会保留前导零吗?

会。像 00127 这样的代码保持为文本,因此 MariaDB 将其存储为 varchar(8),脚本中写作 '00127'。

能不用脚本直接把数据导入 MariaDB 吗?

可以,使用 IntoSQL Pro。桌面应用和命令行会连接到 MariaDB,先创建表,再直接导入各行。

Excel 文件可以多大?

在浏览器中,工作簿需要整体读取,因此上限取决于浏览器分配给本页的内存。桌面应用和命令行可处理任意大小的工作簿;在 Apple M4 笔记本电脑上,命令行转换一个 117 MB、一百万行的工作簿约需一秒。