一尘不染

从MySQL将数据迁移到Firebase

mysql

我有一个现有的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',单词:'cat',单词含义:'哺乳动物物种',单词长度:'3'},
{id:“ 2”,单词:“ catapult”,单词含义:“ throwing device”,单词长度:“ 8”},
{id:“ 3”,单词:“ cart”,单词含义:“要携带东西的东西”,单词长:“ 4”}]

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

关于我可能做错了什么的任何想法?我假设Firebase可以处理此类结构及其中的数据。

谢谢。


阅读 283

收藏
2020-05-17

共1个答案

一尘不染

您的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,因此这可能是偏爱一个或另一个的原因。

2020-05-17