Mysql 将SQL查询导出为JSON格式的文本文件
我需要一种方法来运行SQL命令,然后将结果导出到JSON格式的文本文件 我有这个链接: 但我不理解他的声明中的CREATE_列部分,也不理解他用来理解它与我的数据库的关系的术语 有人能帮我简化一下他在这样一个问题上的例子吗Mysql 将SQL查询导出为JSON格式的文本文件,mysql,mariadb,Mysql,Mariadb,我需要一种方法来运行SQL命令,然后将结果导出到JSON格式的文本文件 我有这个链接: 但我不理解他的声明中的CREATE_列部分,也不理解他用来理解它与我的数据库的关系的术语 有人能帮我简化一下他在这样一个问题上的例子吗 SELECT * FROM thisismy.database; 如果使用INTO OUTFILE命令执行上述操作,则会得到如下数据: 1 Armand Warren 56045 Taiwan, Province of China 0
SELECT * FROM thisismy.database;
如果使用INTO OUTFILE命令执行上述操作,则会得到如下数据:
1 Armand Warren 56045 Taiwan, Province of China 0 0
2 Xenos Salas 71090 Liberia 0 0
3 Virginia Whitaker 62723 Nicaragua 0 0
4 Kato Patrick 97662 Palau 0 0
5 Cameron Ortiz P9C5B6 Eritrea 0 0
{ "aaData": [
[ "1", "Armand", "Warren", "56045", "Taiwan, Province of China" ],
[ "2", "Xenos", "Salas", "71090", "Liberia" ],
[ "3", "Virginia", "Whitaker", "62723", "Nicaragua" ],
[ "4", "Kato", "Patrick", "97662", "Palau" ],
[ "5", "Cameron", "Ortiz", "P9C 5B6", "Eritrea" ]
] }
但我需要它看起来像这样:
1 Armand Warren 56045 Taiwan, Province of China 0 0
2 Xenos Salas 71090 Liberia 0 0
3 Virginia Whitaker 62723 Nicaragua 0 0
4 Kato Patrick 97662 Palau 0 0
5 Cameron Ortiz P9C5B6 Eritrea 0 0
{ "aaData": [
[ "1", "Armand", "Warren", "56045", "Taiwan, Province of China" ],
[ "2", "Xenos", "Salas", "71090", "Liberia" ],
[ "3", "Virginia", "Whitaker", "62723", "Nicaragua" ],
[ "4", "Kato", "Patrick", "97662", "Palau" ],
[ "5", "Cameron", "Ortiz", "P9C 5B6", "Eritrea" ]
] }
有什么建议吗
谢谢
编辑:如果有帮助,我会运行MariaDB
SELECT CONCAT('[\n\t', GROUP_CONCAT(
COLUMN_JSON(
COLUMN_ADD(
COLUMN_CREATE('id', id)
, 'name', name
, 'price', price
)
)
ORDER BY id
SEPARATOR ',\n\t'
), '\n]') AS json
FROM product \G
忽略除创建列之外的所有内容。这就是JSON创建的地方。好的,我们有:
COLUMN_JSON(
COLUMN_ADD(
COLUMN_CREATE('id', id)
, 'name', name
, 'price', price
)
)
COLUMN\u ADD
是将列添加到JSON的函数。每个参数都是与其值配对的键。因此,'name'
是JSON对象中的键,而name
是值。在本例中,它是表product
中的name
列
假设您想查询用户
表并获取他们的名字、姓氏和ID。这是您的查询结果:
SELECT CONCAT('[\n\t', GROUP_CONCAT(
COLUMN_JSON(
COLUMN_ADD(
COLUMN_CREATE('id', id)
, 'first_name', first_name
, 'last_name', last_name
)
)
ORDER BY id
SEPARATOR ',\n\t'
), '\n]') AS json
FROM users \G
在列\u JSON
命令的末尾,我们将转换为JSON
,它将它转换为您想要的JSON类型。您可以使用sql2json(我创建了python包)
您将获得:
{
data: [
{
"a": 1,
"b": 5
},
{
"a": 2,
"b": 10
}
]
}
sql2json是免费的,托管在github中:谢谢,但我发现该代码有一个错误。这里有一个我使用过的更清楚的例子:您需要从表中选择,而不是从数据库中选择。仍然不起作用。我的数据库名称(出于隐私原因更改)为“cubesat”,我的表名称为“places”。我的所有数据都存储在此“位置”表中。因此,使用您的命令,我从cubesat.places指定DB/表名。如果我只指定没有DB名称的表,也没有DB/表名称的任何变化,那么它将不起作用。更新的Pastebin:您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解在“ORDER BY mimetype_file1 SEPARATOR',\n\t'),“\n]”附近使用的正确语法,因为第8行的json FROM dbname“第8行是ORDER BY portionSee