将MySQLjson数据类型字段直接导出为CSV
Export MySQL json data type field directly to CSV
考虑具有 JSON 字段的 MySQL 数据库 (8.x):
mysql> desc users_health;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int unsigned | NO | PRI | NULL | auto_increment |
| user_id | int | NO | | NULL | |
| data | json | YES | | NULL | |
| created_at | timestamp | YES | | NULL | |
| updated_at | timestamp | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
在这个答案中有一种方法可以将列导出到 csv 字段:
How to output MySQL query results in CSV format?
我想要实现的是仅将 data
列中的数据导出到 CSV。此数据组织良好,由键值对组成,如下所示:
{"email": "x@example.com", "user_id": 100, "ivr_used": false, "ivr_enabled": true, "callerids_used": true, "call-queue_used": false ...}
我希望将其导出为如下所示的 CSV 文件:
+--------------+-----------+----------+-------------+----------+
| email | user_id | ivr_used | ivr_enabled | ... |
+--------------+----------+-----------+-------------+----------+
| x@example.com| 100 | false | true | ... |
+--------------+----------+-----------+-------------+----------+
| y@example.com| 101 | true | true | ... |
+--------------+----------+-----------+-------------+----------+
....
这甚至可以使用仅 MySQL 的解决方案,还是我必须获取数据并在其他地方处理它?
对我来说部分有效的解决方案是将数据导出到 JSON 文件。
这有点像数据在列中,你必须从每一行数据列中提取你想要的每个值
SELECT JSON_EXTRACT(data, '$.email') as email,
JSON_EXTRACT(data, '$.user_id') as user_id,
. . .
FROM users_health
WHERE foo = 'bar'
INTO OUTFILE '/var/lib/mysql-files/orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
考虑具有 JSON 字段的 MySQL 数据库 (8.x):
mysql> desc users_health;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int unsigned | NO | PRI | NULL | auto_increment |
| user_id | int | NO | | NULL | |
| data | json | YES | | NULL | |
| created_at | timestamp | YES | | NULL | |
| updated_at | timestamp | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
在这个答案中有一种方法可以将列导出到 csv 字段:
How to output MySQL query results in CSV format?
我想要实现的是仅将 data
列中的数据导出到 CSV。此数据组织良好,由键值对组成,如下所示:
{"email": "x@example.com", "user_id": 100, "ivr_used": false, "ivr_enabled": true, "callerids_used": true, "call-queue_used": false ...}
我希望将其导出为如下所示的 CSV 文件:
+--------------+-----------+----------+-------------+----------+
| email | user_id | ivr_used | ivr_enabled | ... |
+--------------+----------+-----------+-------------+----------+
| x@example.com| 100 | false | true | ... |
+--------------+----------+-----------+-------------+----------+
| y@example.com| 101 | true | true | ... |
+--------------+----------+-----------+-------------+----------+
....
这甚至可以使用仅 MySQL 的解决方案,还是我必须获取数据并在其他地方处理它?
对我来说部分有效的解决方案是将数据导出到 JSON 文件。
这有点像数据在列中,你必须从每一行数据列中提取你想要的每个值
SELECT JSON_EXTRACT(data, '$.email') as email,
JSON_EXTRACT(data, '$.user_id') as user_id,
. . .
FROM users_health
WHERE foo = 'bar'
INTO OUTFILE '/var/lib/mysql-files/orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';