(Ruby)如何将XML文件中的数据导入SQLite表

时间:2013-07-04 13:51:47

标签: ruby xml sqlite nokogiri

我想将XML文件中的数据导入到我的SQLite表中。我该怎么办?我真的需要一些帮助。 这是我的代码,我不知道这些有什么问题。

require 'rubygems'
require 'nokogiri'
require 'open-uri'
class AddCoursesData < ActiveRecord::Migration
  def up
    Course.delete_all
    courses = Nokogiri::XML(File.open("courses.xml"))

    courses.css('course').each do |node|
      children = node.children

      Course.create(
        acode: node['acode'],
        code: node['code'],
        sgid: node['sgid'],
        name: children.css('name').inner_text,
        ects: children.css('ects').inner_text,
        year: children.css('year').inner_text,
        period: children.css('period').inner_text,
        institute: children.css('institute').inner_text,
        description: children.css('description').inner_text,
        timetable: children.css('timetable').inner_text,
        lecture_material: children.css('lecture_material').inner_text,
        goals: children.css('goals').inner_text,
        participant_count: children.css('participant_count').inner_text,
        specialities: children.css('specialities').inner_text,
        examination: children.css('examination').inner_text
      )

    end
  end

  def down
  end
end

然后我输入

>rake db:migrate  

它说

"rake aborted!
 cannot load such file -- nokogiri
 D:in 'migrate'
 Tasks: TOP=> db:migrate"

我安装了nokogiri。我真的不知道如何导入这些数据。所以你可以帮我这个吗?非常感谢!!

这是我的rubygems环境

D:\BitNami\rubystack\rubywork\UvAcourses>gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.3
  - RUBY VERSION: 1.9.3 (2012-05-25 patchlevel 231) [i386-mingw32]
  - INSTALLATION DIRECTORY: D:/BitNami/rubystack/ruby/lib/ruby/gems/1.9.1
  - RUBY EXECUTABLE: D:/BitNami/rubystack/ruby/bin/ruby.exe
  - EXECUTABLE DIRECTORY: D:/BitNami/rubystack/ruby/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-mingw32
  - GEM PATHS:
     - D:/BitNami/rubystack/ruby/lib/ruby/gems/1.9.1
     - C:/Users/Lulu/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/

1 个答案:

答案 0 :(得分:0)

你的Ruby多大了?

在Ruby 1.8.7之前,我们必须使用以下命令启动我们的需求列表:

require 'rubygems'

因为RubyGems不是Ruby标准库的一部分。如果我们没有这样做,我们将无法找到所有外部(非核心和非标准lib)宝石。

现在没有必要。

判断是否安装了Nokogiri的其他方法是在命令行输入:

gem list nokogiri
which nokogiri

第一个查看已安装宝石的内部列表。第二个问题是Linux或Mac OS OS是否看到&#34; nokogiri&#34;命令,由gem安装。