当前位置: 首页 > 面试题库 >

如何将MySQL数据库导出为JSON?

袁轶
2023-03-14
问题内容

我有兴趣将值的子集从MySQL数据库导出到磁盘上的JSON格式的文件中。

我找到了一个讨论执行此操作的方法的链接:http :
//www.thomasfrank.se/mysql_to_json.html

…但是当我使用该页面中的方法时,它似乎可以工作,但是有两个问题:

1)它只返回大约15个结果,最后一个突然中断(不完整)。当我按以下方式运行时,我对此的标准查询返回大约4000个结果,SELECT name, email FROM students WHERE enrolled IS NULL 但是当我按以下方式运行时:

SELECT 
     CONCAT("[",
          GROUP_CONCAT(
               CONCAT("{name:'",name,"'"),
               CONCAT(",email:'",email,"'}")
          )
     ,"]") 
AS json FROM students WHERE enrolled IS NULL;

…如链接中所述,它仅返回(如我所述)15个结果。(一开始,我对照应该得到的4000来检查了这些结果,而这15个结果与4000的前15个结果相同)

2)当我添加INTO OUTFILE '/path/to/jsonoutput.txt' FIELDS TERMINATED BY ','到该查询的末尾时,实际文件中似乎包含“转义”字符。因此,逗号最终看起来像“ \”,而显然我只希望逗号不带有\。

关于如何从MySQL获取正确的JSON输出的任何想法?(使用此方法还是其他方法)?

谢谢!


问题答案:

可能要求MySQL太多的人期望MySQL直接从查询中生成格式正确的json。相反,可以考虑生成更方便的内容,例如CSV(使用INTO OUTFILE '/path/to/output.csv' FIELDS TERMINATED BY ','您已经知道的摘录),然后将结果转换为使用内置支持的语言(如python或php)的json。

*使用优良的SQLAlchemy *编辑 python示例:

class Student(object):
    '''The model, a plain, ol python class'''
    def __init__(self, name, email, enrolled):
        self.name = name
        self.email = email
        self.enrolled = enrolled

    def __repr__(self):
        return "<Student(%r, %r)>" % (self.name, self.email)

    def make_dict(self):
        return {'name': self.name, 'email': self.email}



import sqlalchemy
metadata = sqlalchemy.MetaData()
students_table = sqlalchemy.Table('students', metadata,
        sqlalchemy.Column('id', sqlalchemy.Integer, primary_key=True),
        sqlalchemy.Column('name', sqlalchemy.String(100)),
        sqlalchemy.Column('email', sqlalchemy.String(100)),
        sqlalchemy.Column('enrolled', sqlalchemy.Date)
    )

# connect the database.  substitute the needed values.
engine = sqlalchemy.create_engine('mysql://user:pass@host/database')

# if needed, create the table:
metadata.create_all(engine)

# map the model to the table
import sqlalchemy.orm
sqlalchemy.orm.mapper(Student, students_table)

# now you can issue queries against the database using the mapping:
non_students = engine.query(Student).filter_by(enrolled=None)

# and lets make some json out of it:
import json
non_students_dicts = ( student.make_dict() for student in non_students)
students_json = json.dumps(non_students_dicts)


 类似资料:
  • 问题内容: 我想从PHPMyAdmin(或MySQl Workbench)导出数据库,然后将其导入SQLite数据库,这样我就可以进行本地编辑和测试而不会破坏实时版本。我对SQL非常陌生,因此所有导出选项等在这一点上对我来说都很密集。我尝试通过命令使用默认的导出设置PHPMyAdmin 也 但是这些引发了很多语法错误和“没有这样的表”错误。 我还尝试了在此处找到的经常被引用的脚本脚本,但是当我尝试

  • 我正在尝试将mysql数据库导入新版本的xampp(v7.1.8)。按下导入按钮后,我收到数百条此错误消息: 请注意.\vendor\phpmyadmin\sql parser\src\UtfString.php#128未初始化字符串偏移量:516 回溯 .\vendor\phpmyadmin\sql parser\src\Lexer.php\823:phpmyadmin\SqlParser\Ut

  • 问题内容: 谁能解释一下如何将Microsoft Excel文件导入到MySQL数据库中? 例如,我的Excel表如下所示: 问题答案: 将其导出为某种文本格式。最简单的可能是制表符分隔的版本,但是CSV也可以使用。 使用加载数据功能。见http://dev.mysql.com/doc/refman/5.1/en/load-data.html 查看页面的一半,因为它将为制表符分隔的数据提供一个很好

  • 由于我已经从下面的代码中导出了数据库文件,但我无法打开导出的文件,如何打开导出的文件?

  • 我想知道如何将表数据导出到csv中?我读到我需要使用mysql工作台命令行,但我不知道如何启动cmd行(不知道命令是什么)。 在 Windows 7 64 位上运行。

  • 问题内容: 我在Windows 7上,对这个数据库东西有些陌生。我尝试在Google上搜索如何将时区从我的系统更改为UTC,但是文档有些高级,因此我不太确定如何更改此字段。 问题答案: 在my.ini文件的[mysqld]部分下,添加以下行: 重新启动服务器。您还可以在运行时从命令行使用以下命令进行设置 MySql的文档