json - 如何在 MySQL (10.2.36-MariaDB) 表中导入 JSON 值?
问题描述
我有以下 JSON 文件:
{
"ID": 5464015,
"CUSTOMER_ID": 1088020,
"CUSOTMER_NAME": "My customer 1"
}
{
"ID": 5220812,
"CUSTOMER_ID": 523323,
"CUSOTMER_NAME": "My customer 2"
}
{
"ID": 5205039,
"CUSTOMER_ID": 1934806,
"CUSOTMER_NAME": "My customer 3"
}
从 shell 脚本中,我想将这些值导入到 MariaDB 表(MariaDB 服务器版本:10.2.36-MariaDB)中,并已创建相关列:
- ID
- 客户ID
- 顾客姓名
但是对于 CUSTOMER_NAME,我不想在值的开头和结尾导入双引号。有没有简单的方法来做到这一点?
或者如果不可能,如果我有这样的 txt 或 csv 文件:
5464015,1088020,"My customer 1"
5220812,523323,"My customer 2"
5205039,1934806,"My customer 3"
如何导入?
非常感谢
解决方案
CREATE TABLE test (ID INT, CUSTOMER_ID INT, CUSTOMER_NAME VARCHAR(255));
SET @data := ' [ { "ID": 5464015, "CUSTOMER_ID": 1088020, "CUSTOMER_NAME": "My customer 1" }, { "ID": 5220812, "CUSTOMER_ID": 523323, "CUSTOMER_NAME": "My customer 2" }, { "ID": 5205039, "CUSTOMER_ID": 1934806, "CUSTOMER_NAME": "My customer 3" } ] ';
INSERT INTO test SELECT * FROM JSON_TABLE(@data, "$[*]" COLUMNS( ID INT PATH "$.ID", CUSTOMER_ID INT PATH "$.CUSTOMER_ID", CUSTOMER_NAME VARCHAR(255) PATH "$.CUSTOMER_NAME") ) AS jsontable;
SELECT * FROM test;
ID | 客户ID | 顾客姓名 |
---|---|---|
5464015 | 1088020 | 我的客户 1 |
5220812 | 523323 | 我的客户 2 |
5205039 | 1934806 | 我的客户 3 |
db<>在这里摆弄
推荐阅读
- mysql - 是否可以将应用程序内的所有数据库交互限制为读取?
- python - 使用 BCP 将 CSV 文件导入 SQL Server 表时如何格式化日期字段?
- ios - iOS13 崩溃-[UIWindowScene _enumerateWindowsIncludingInternalWindows:onlyVisibleWindows:asCopy:stopped:withBlock:]?
- javascript - 如何返回存储在 cookie 中的 URL
- css - 使用 Bash 脚本查找和替换 css 文件中的文件名
- java - 使用流而不是嵌套的 for 循环
- android - 我怎样才能使 ProgressBar 角直而不圆?
- html - 使用 Thymeleaf 和 Spring boot 从下拉列表中提取所选值
- python - 如何比较不在另一个二维列表中的二维列表?
- pandas - 熊猫掩码数据框分配二维数组