【发布时间】:2016-11-07 07:39:27
【问题描述】:
我正在尝试像下面的示例那样转换配置文件,以便生成 SQL 命令以插入到我的 Oracle 表中。我正在尝试使用 Perl,但我愿意尝试其他语言,例如 Python。
配置示例:
# This is a comment
feed_realtime_processor_pool = ( 11, 12 ) ;
dropout_detection_time_start = "17:00";
# Sometimes the config can have sub-structures
named_clients = (
{
name = "thread1";
user_threads = (
{ name = "realtime1"; cpu = 11; } # more comments
{ name = "realtime2"; cpu = 12; } # more comments
);
}
);
(...)
转换(空格只是为了更好的可视化):
id,parent, key, value
01,null, 'feed_realtime_processor_pool', '11'
02,null, 'feed_realtime_processor_pool', '12'
03,null, 'dropout_detection_time_start', '17:00'
04,null, 'named_clients', null
05,04, 'name', 'thread1'
06,04, 'user_threads', null
07,06, 'name', 'realtime1'
08,06, 'cpu', '11'
09,06, 'name', 'realtime2'
10,06, 'cpu', '12'
所以,问题是:
-
有人知道一些可以做到这一点的库/模块吗?我可以找到配置解析器,但找不到可以提供树格式的好解析器。
-
如果没有,有人可以给我一些关于我应该如何启动这个脚本的建议,也许使用不同的模块来帮助我解析配置?清理和解析配置对我来说是最难的部分。
第一次更新:
- 我忘了说,我有大量的配置要导入到我的数据库中,这不是一次性事件。每当我的公司客户为不同的安装生成新配置时,该脚本就会运行。
- 我选择 perl 是因为我认为它的执行速度可能比 Python 快。
- 我对 SQL 很熟悉,但对 Perl 不太擅长
- 配置遵循我在示例中放置的相同结构,唯一的变化与键/值对之间的空格数或花括号的缩进等有关。
- 我已经开始使用 DBI 编写 perl 脚本,但主要问题是将此配置解析为我可以轻松使用的格式。我总是发现我的正则表达式被破坏并且我不断调整的情况。如果我可以只使用一个库来自动解析配置,那就太好了。我要试试你们提到的那些。
谢谢!
第二次更新:
伙计们,我在Perl Monks 上交叉发布了这个问题,并在那里得到了另一个反馈,我也在测试。一旦我测试了所有内容,将发布答案。谢谢。
【问题讨论】:
-
好点,我现在添加了更多信息。谢谢
-
请在您cross-post时通知人们