【问题标题】:Parse XML in (J)Ruby and Insert to Database在 (J)Ruby 中解析 XML 并插入数据库
【发布时间】:2009-10-16 13:38:01
【问题描述】:

我对 (J)Ruby 还很陌生 - 在 RoR 中编写了一些小型“演示应用程序” 但还没有真正理解语法。

我现在有一个用 Java 编写的应用程序,它需要一个 XML 文件, 解析它,然后使用 Hibernate 将其插入 MySQL 数据库。 我真正想做的是看看我是否可以将它移植到 JRuby,- 主要作为学习练习 - 但我不确定在哪里 开始。

这个文档似乎给出了解析 XML 的好主意:

http://developer.yahoo.com/ruby/ruby-xml.html

但是从那里开始,我不确定将它放入数据库的最佳方法是什么 是。 ActiveRecord 是否是一个选项,如果是,我如何将它连接到 一个“独立”的 JRuby 应用程序?或者我想我可以以某种方式整合我的 现有的 Hibernate 东西,对吧?

我们将不胜感激地收到任何建议或示例代码链接...

问候, 安德鲁。

【问题讨论】:

标签: mysql xml ruby jruby


【解决方案1】:

继续尝试 ActiveRecord,这里是 h2 嵌入式 java 数据库的一些入门。

我认为你需要这些宝石

jruby -S gem install active_record
jruby -S gem install active_record_jdbc_adapter
jruby -S gem install active_record_jdbch2_adapter
jruby -S gem install jdbc_h2

然后你可以像这样使用活动记录

require 'active_record'
require 'logger'

my_logger = Logger.new(STDOUT)
my_logger.level = Logger::DEBUG
ActiveRecord::Base.logger = my_logger

ActiveRecord::Base.establish_connection(
  :adapter => 'jdbch2',
  :database => "my_database_file",        # set to anything you want first run
  :username => "my_username",             # set to anything you want first run
  :password => "my_secret_password"       # set to anything you want first run
)

您需要插入一些表格。按照 ActiveRecord 约定,维护一个包含有序数据库架构更改的文件夹,然后将迁移器指向该文件夹。例如创建一个“迁移”文件夹,并将以下文件命名为“20090815230000_create_my_models.rb”。确保“snake_case”文件名与 CamelCase 类名匹配。

class CreateMyModels < ActiveRecord::Migration
  def self.up
    create_table :my_models do |t|
      t.string  :foo
    end
  end

  def self.down
    drop_table :my_models
  end
end

现在(返回到您的主脚本)您可以将 Rails 迁移器指向该文件夹。 rails 迁移器存储所有必要的元数据,以便按顺序运行迁移,并在新迁移可用时运行。

ActiveRecord::Migration.verbose = true
ActiveRecord::Migrator.migrate("migrations")

创建表格后,您可以正常使用 ActiveRecord

class MyModel < ActiveRecord::Base
end

现在您可以将内容插入数据库。

x=MyModel.new
x.foo="bar"
x.save!

我希望这会有所帮助。如果 ActiveRecord 工作起来太痛苦,Sequel 既轻松又有趣。

【讨论】:

  • 酷,同样适用于 mysql,只需 gem 安装 jdbc-mysql,然后在驱动部分中放入 jdbcmysql
猜你喜欢
  • 1970-01-01
  • 2012-02-07
  • 2010-11-03
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
  • 2010-12-17
  • 1970-01-01
相关资源
最近更新 更多