2013-07-04 63 views
0

我想將XML文件中的數據導入到SQLite表中。我該怎麼辦?我真的需要一些幫助。 這是我的代碼,我不知道這些有什麼問題。(Ruby)如何將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/ 
+0

您是否安裝了Nokogiri? –

+0

是的。我想是這樣。 「成功安裝nokogiri-1.6.0-x86-mingw32 無法將」\ xE6「轉換爲UTF-8從ASCII-8BIT轉換爲UTF-8轉換爲GBK for CHANGELOG.ja.rdoc,跳過 無法將」\ xE6「 xC3「轉換爲UTF-8轉換爲ASCII-8BIT轉換爲UTF-8轉換爲GBK轉換爲CHANGELOG.rdoc,跳過 無法在從ASCII-8BIT轉換爲UTF-8轉換爲GBK的情況下將」\ xE2「轉換爲UTF-8 /nokogiri/xml_node_set.c,跳過 無法在從ASCII-8BIT到UTF-8的轉換中將「\ xE9」轉換爲UTF-8爲README.ja.rdoc的GBK,跳過 已安裝1個gem「 – zll19910516

+0

一個Rails應用程序?如果是這樣,你可能需要將Nokogiri添加到你的'Gemfile'中。 – matt

回答

0

幾歲是你的Ruby?

此前的Ruby 1.8.7,我們必須與開始我們要求清單:

require 'rubygems' 

因爲RubyGems的不是Ruby的標準庫的一部分。如果我們沒有這樣做,我們將無法找到所有外部(非核心和非標準庫)寶石。

現在沒有必要。

其他方式來判斷是否安裝引入nokogiri是在命令行中輸入這些:

gem list nokogiri 
which nokogiri 

第一長相通過安裝寶石的內部列表。如果看到由gem安裝的「nokogiri」命令,則第二個會詢問Linux或Mac OS OS。

+0

我的紅寶石版本是1.9.3 – zll19910516

+0

我已經在第一步看到了我的nokogiri寶石。但在第二步中,我的是windows7,我該怎麼辦? – zll19910516

+0

將'gem env'的輸出追加到您的問題中。 –

相關問題