从MySQL迁移数据到Firebase

时间:2013-09-20 11:55:06

标签: 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;

我的问题是:如何将此表结构及其中的数据从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:'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可以处理这些结构及其中的数据。

感谢。

3 个答案:

答案 0 :(得分:40)

以防万一其他人在将来遇到这个问题时,有一种更简单的方法可以做到这一点。

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

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

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

答案 1 :(得分:11)

您的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. 在键周围加上(双)引号,而不仅仅是值
  3. 您可能需要考虑不引用idwordlength的值,因为这些属性似乎是数字。

    修改

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

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

答案 2 :(得分:1)

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

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

enter image description here

  1. 选择要导出的列值,在接下来的屏幕中有一个选项可以将数据导出为 csv/json

enter image description here