mysqlimport可以接受JSON输入吗?

时间:2012-12-11 19:16:31

标签: json mysqlimport

我们目前有一些由管道分隔文本组成的日志,其格式为

field1:value1|field2:value2|...|fieldN:valueN\n
field1:value1|field2:value2|...|fieldN:valueN\n
etc.

我有一个导入程序脚本(运行perl然后运行mysqlimport的bash),它目前从每行的开头删除几个单词,然后在生成的文本文件上运行mysqlimport。

我们正在将日志记录升级到输出JSON的数据服务。导入器脚本仍将该JSON的内容导入MySQL数据库表。采用那个漂亮的JSON并将其转换为管道分隔文件以与mysqlimport一起使用感觉就像是糟糕的形式 - 但我有任何选择吗?我在mysql文档或论坛中找不到任何内容。

2 个答案:

答案 0 :(得分:0)

只是一个友好的批评:对我来说,转换一个是不好的:

  • json text string - >管道分隔数据 - >管道分隔的解析器 - >到数据库或
  • json text string - >管道分隔数据 - >管道分隔的解析器 - >到阵列 - >到数据库。

管道分隔的支持比json字符串少。

最好的方法是将数据保存在json字符串中。

然后,您可以使用您熟悉的任何编程语言对其进行解析。例如,将它放在一个数组中。然后,相应地将每个数组保存在数据库中。

但是,如果这是贵公司正在使用的,并且他们已经有一个管道分隔的解析器,如果他们已经构建一个,或者你很难建议(无论是什么说服他们的不可能的方式)。然后,最好的方法是坚持一会儿。

如果你有自己的时间,你可以建立自己的

  • json解析器 - >到阵列 - >到数据库应用程序。
  • json解析器 - >到数据库应用程序(基于关键和价值)

这更容易。

答案 1 :(得分:0)

我宁愿将实体JSON转换为同样稳固的,与mysqldump兼容的SQL multiline insert statement

  

使用VALUES语法的INSERT语句可以插入多行。为此,请包含多个列值列表,每个列值都括在括号内并用逗号分隔。示例:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

因为你无论如何都在使用Perl脚本,所以这不会造成太大问题。

相关问题