我需要一种方法来运行SQL命令,然后将结果导出为JSON格式的文本文件。
我有这个链接:https://falseisnotnull.wordpress.com/2014/11/23/creating-json-documents-with-mariadb/
但我不理解他的陈述中的CREATE_COLUMN部分,也不了解他用来理解它与我的数据库的关系的术语。
有人可以通过这样的查询为我简化他的例子吗?
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" ]
] }
有什么建议吗?
由于
编辑:如果有帮助,我会运行MariaDB
答案 0 :(得分:1)
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
忽略除COLUMN_CREATE
以外的所有内容。这是JSON创建的地方。好的,我们有:
COLUMN_JSON(
COLUMN_ADD(
COLUMN_CREATE('id', id)
, 'name', name
, 'price', price
)
)
COLUMN_ADD
是将列添加到JSON的函数。每个参数都是与其值配对的键。所以'name'
是JSON对象中的键,name
是值。在这种情况下,它是表name
中的product
列。
因此,假设您要查询users
表并获取其名字,姓氏和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
在COLUMN_JSON
命令的末尾,我们有AS json
,它将其转换为您想要的JSON类型。
答案 1 :(得分:0)
您可以使用sql2json(我创建了python包)。
python3 -m sql2json --name mysql --query "SELECT a, b from my_table" --wrapper --output myoutputfile.json
您将获得:
{
data: [
{
"a": 1,
"b": 5
},
{
"a": 2,
"b": 10
}
]
}
sql2json是免费的,并托管在github中:https://github.com/fsistemas/sql2json