从MySQL迁移数据到Firebase

22

我有一个现成的PHP/MySQL应用程序,现在正试图将其迁移到AngularJS/Firebase,只是为了学习这些新技术。

该应用程序在MySQL中拥有自己的表模式。其中一个表看起来像这样:

CREATE TABLE `dictionary` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `word` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `wordmeaning` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `wordlength` int(11) unsigned NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

我的问题是:我该如何将MySQL中的表结构和数据迁移到Firebase?

我尝试通过类似以下查询的方式将数据导出为JSON字符串:

SELECT      CONCAT("[",
          GROUP_CONCAT(
               CONCAT("{id:'",id,"',"),
               CONCAT("word:'",word,"',"),
               CONCAT("wordmeaning:'",wordmeaning,"',"),
               CONCAT("wordlength:'",wordlength,"'}")
          )
     ,"]") 
AS json FROM dictionary;

这将生成一个有效的JSON字符串,例如:

[{id:'1',word:'cat',wordmeaning:'一种哺乳动物物种',wordlength:'3'},
{id:'2',word:'catapult',wordmeaning:'投掷装置',wordlength:'8'},
{id:'3',word:'cart',wordmeaning:'用于搬运物品的东西',wordlength:'4'}]

我将其保存在文件中,并尝试使用“导入JSON”按钮从Firebase导入该文件,结果出现错误:解析JSON数据时发生错误。请验证您的输入。(该JSON字符串是有效的。我在http://jsonviewer.stack.hu/上进行了检查)

有什么想法可能是我的做法有问题吗?我假设Firebase可以处理这样的结构和其中的数据。

谢谢。

4个回答

53

以防将来有人遇到此问题,有一个更简单的方法可做到这一点。

您可以使用SQLYog等工具将MySQL表导出为CSV文件。

一旦您获得了CSV文件,您就可以使用免费在线工具(如http://www.convertcsv.com/csv-to-json.htm)将其转换为JSON格式。

我刚刚在约15分钟内将40个表从MySQL导入Firebase。希望能帮助到某些人!


13
它确实帮助了某个人!(两年后)谢谢。 - Andy
2
将包含数千个敏感记录的CSV上传到第三方服务器是否安全? - Muhammad Saqib
我同意穆罕默德的观点,将敏感数据上传到任何服务器上都可能不是最好的选择。 - rufw91
你不需要使用在线转换器。在许多编程语言中,如JavaScript、Python或PHP,从CSV文件读取数据并将其写入JSON几乎是一件微不足道的事情。 - dmuensterer
您不会上传任何数据到convertcsv.com - 所有处理都在您的计算机浏览器上进行。 - dataman

17

您的 JSON 不是有效的。将其更改为以下内容即可使其有效:

[{"id":"1","word":"cat","wordmeaning":"a mammal species","wordlength":"3"},
{"id":"2","word":"catapult","wordmeaning":"throwing device","wordlength":"8"},
{"id":"3","word":"cart","wordmeaning":"something to carry things in","wordlength":"4"}]

所以这些是更改:

  1. 使用双引号而不是单引号
  2. 在键周围加上(双)引号,而不仅仅是值

您可能希望考虑不对 idwordlength 的值进行引号处理,因为这些属性似乎是数字。

编辑

这两个在线工具似乎正确验证了JSON(或至少符合Firebase的预期):

第二个还可以漂亮地打印JSON,因此这可能是偏好一个还是另一个的原因。


谢谢你,Frank。我已经相应地修改了我的导出SQL,现在导入工作正常。 - LesC
有没有办法将整个 SQL 数据库导出到 Firebase?我大约有 4 张表。 - Rosário Pereira Fernandes

2

表格数据导出向导支持以JSON格式导出数据

  1. 右键单击表名,选择表格数据导出向导

enter image description here

选择要导出的列值,在下一个屏幕中有将数据导出为csv/json的选项。

enter image description here


0
可以使用json_object完成: SELECT CONCAT(json_object('id', id, 'word', word, 'wordmeaning', wordmeaning, 'wordlength', wordlength),",") FROM dictionary;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接