从MySQL迁移数据到Firebase

Les*_*esC 13 mysql firebase

我有一个现有的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;
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何将此表结构及其中的数据从MySQL迁移到Firebase?

我已经尝试通过查询将数据导出为JSON字符串,例如:

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

这给出了一个有效的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'}]

我将其保存在一个文件中,并尝试使用导入JSON按钮从Firebase导入文件,我得到了:解析JSON数据时出错.请验证您的输入.(JSON字符串有效.我在http://jsonviewer.stack.hu/查看了它)

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

谢谢.

Chi*_*ean 41

为了防止其他人在将来遇到这个问题,有一个更简单的方法来做到这一点.

您可以使用SQLYog之类的工具将MySQL表导出为CSV文件.

获得CSV文件后,您可以使用免费的在线工具将其转换为JSON格式,如下所示:http://www.convertcsv.com/csv-to-json.htm

我在大约15分钟内从MySQL导入了40个表到Firebase.希望有人帮助!

  • 它确实帮助了某人!(2年后)谢谢 (9认同)
  • 将包含数千条敏感记录的 CSV 上传到 3rd 方服务器是否安全? (2认同)

Fra*_*len 13

您的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"}]
Run Code Online (Sandbox Code Playgroud)

所以这些是变化:

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

您可能要考虑不引用的值idwordlength,因为这些特性似乎是数字.

编辑

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

第二个也很漂亮地打印JSON,因此这可能是偏好其中一个的原因.