将 CSV 转换为 MariaDB
拖入你的 CSV 文件,即可得到包含 CREATE TABLE 和 INSERT 语句的 MariaDB 脚本。每列都会获得类型,每处修正都会连同所在行和列一起列出。
已转换 5 行,8 处修正,无拒绝
| 行 | ||||||
|---|---|---|---|---|---|---|
| 5 | 00412 | Peña Muñoz | Mérida | 15/02/2024 | 1.234,50 | sí |
| 6 | 00413 | José Ángel Ruiz | León | 03/02/2024 | 99,90 | no |
| 7 | 00414 | Zoë Ortíz | Querétaro | 29/02/2024 | N/A | sí |
| 8 | 00415 | Ñuño Castañeda | Oaxaca | 28/02/2024 | 7,25 | no |
| 9 | 00416 | Iñaki Olaizola | Mazatlán | 11/03/2024 | 980,75 | sí |
-- Written by IntoSQL for MariaDB.
SET NAMES utf8mb4;
SET SESSION sql_mode = REPLACE(@@sql_mode, 'NO_BACKSLASH_ESCAPES', '');
START TRANSACTION;
CREATE TABLE ventas_2024 (
folio varchar(8) NOT NULL,
cliente varchar(16) NOT NULL,
ciudad varchar(16) NOT NULL,
fecha date NOT NULL,
importe decimal(6,2),
pagado tinyint(1) NOT NULL
) DEFAULT CHARSET=utf8mb4;
INSERT INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES
('00412', 'Peña Muñoz', 'Mérida', '2024-02-15', 1234.50, TRUE),
('00413', 'José Ángel Ruiz', 'León', '2024-02-03', 99.90, FALSE),
('00414', 'Zoë Ortíz', 'Querétaro', '2024-02-29', NULL, TRUE),
('00415', 'Ñuño Castañeda', 'Oaxaca', '2024-02-28', 7.25, FALSE),
('00416', 'Iñaki Olaizola', 'Mazatlán', '2024-03-11', 980.75, TRUE);
COMMIT;
修正
- 该文件以 windows‑1252 编码写入,已转换为 UTF-8。
- 表头在第 4 行;其上方的行未包含在内。
- 第 10 行("TOTAL")是合计行,因此未包含在内。
- 已保留 "Folio" 中的前导零:00412 仍为 00412,以文本存储。
- 15/02/2024 证明 "Fecha" 中的日期是日在前,因此 03/02/2024 读作 2024‑02‑03。
- "Importe" 中的数字使用小数逗号:1.234,50 读作 1234.50。
- "Importe" 中的 N/A 已读作空值(5 个值中有 1 个)。
- "Pagado" 包含是/否类词语(sí, no),已存储为布尔值。
文件在这台电脑上转换,永远不会上传。
其他示例:
从 CSV 到 MariaDB,逐列说明
上方的示例 ventas_2024.csv 由 IntoSQL 为 MariaDB 写出的结果:每列在文件中的内容、获得的类型,以及第一个值在脚本中的写法。
| 文件中 | 第一个值 | 列 | MariaDB 类型 | 脚本中 |
|---|---|---|---|---|
| Folio | 00412 | folio | varchar(8) | '00412' |
| Cliente | Peña Muñoz | cliente | varchar(16) | 'Peña Muñoz' |
| Ciudad | Mérida | ciudad | varchar(16) | 'Mérida' |
| Fecha | 15/02/2024 | fecha | date | '2024-02-15' |
| Importe | 1.234,50 | importe | decimal(6,2) | 1234.50 |
| Pagado | sí | pagado | tinyint(1) | TRUE |
将脚本导入 MariaDB
下载的是普通的 .sql 文件。用 MariaDB 自带的工具运行即可。
在终端中
mariadb --default-character-set=utf8mb4 mydb < ventas_2024.mariadb.sql脚本自身已设置 utf8mb4;该参数让客户端以相同方式发送,因此重音字符完整保留。
在数据库工具中
在 HeidiSQL 或 DBeaver 中打开脚本并运行。
不使用脚本Pro
IntoSQL Pro 可以通过桌面应用或命令行将文件直接导入 MariaDB,无需生成脚本。
intosql load ventas_2024.csv --into mariadb://user@localhost/mydb关于 CSV 文件和 MariaDB 需要了解的内容
IntoSQL 如何读取 CSV 文件
- 会自动识别编码,包括 Windows-1252 和 UTF-16,因此重音字符和 ñ 都能完整保留。
- 会自动识别分隔符:逗号、分号、制表符或竖线。使用分号时,像 1.234,50 这样的小数逗号会按数字读取。
- 带引号的值可以包含分隔符和换行。
关于 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 |
关于 CSV 转 MariaDB 的问题
这里没有你要的答案?请通过联系页面给我们留言,会有专人回复。 联系页面
如何将 CSV 转换为 MariaDB?
将文件拖到本页顶部的转换器上。它会找到表头、读取每个值并写出 MariaDB 脚本,同时列出每处修正。下载脚本后用 the mariadb client 运行。
如果我的 CSV 使用分号或制表符怎么办?
分隔符会被自动检测:逗号、分号、制表符或竖线。你也可以在"更多选项"中设置。使用分号时,像 1.234,50 这样的小数逗号会读作数字。
它使用哪些 MariaDB 类型?
是/否值变为 tinyint(1),整数变为 int,小数变为 decimal(p,s),日期变为 date,带时间的日期变为 datetime(6),文本变为 varchar(n)。长度取自每列中最长的值。
在 MariaDB 中会保留前导零吗?
会。像 00412 这样的代码保持为文本,因此 MariaDB 将其存储为 varchar(8),脚本中写作 '00412'。
能不用脚本直接把数据导入 MariaDB 吗?
可以,使用 IntoSQL Pro。桌面应用和命令行会连接到 MariaDB,先创建表,再直接导入各行。
CSV 文件可以多大?
浏览器以流式方式读取 CSV,因此几 GB 的文件也能处理。在 Apple M4 笔记本电脑上,命令行转换一个 174 MB、一百万行的 CSV 不到一秒。