将SQL查询导出为JSON格式的文本文件

时间:2017-07-28 03:36:27

标签: mysql mariadb

我需要一种方法来运行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

2 个答案:

答案 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