论坛首页 编程语言技术论坛

在ubuntu下如何将数据导入到mysql中

浏览 3715 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-07-10  
在unbuntu下导入数据的工具不是很多,今天也正好遇到,总结了几种方法。
假如我们的数据已经放到excel中,当然不是ms的excel,而是open office中的excel。
我们的数据结构很简单,第一列是一个数值,第二列是一个字符串。


第一种 用mysql自带方法

进入mysql中
load data local infile '/working/industry.csv' INTO TABLE mynewtable  fields terminated by ';' lines terminated by '\n' (name);
其中mynewtable是我们在mysql中创建的表,包括字段和类型都事先定义好。

第二种是用程序,用ruby写了一种。思路是先把excel文件另存为csv格式,再用ruby读取,再插入到数据库中。

require "mysql"

begin
  # connect to the MySQL server
  dbh = Mysql.real_connect("localhost", "root", "password", "myappdb")

  dbh.query("SET NAMES utf8")

  File.open('/working/industry.csv').each_line{ |s|
    lines =  s.split(',')
    sql = "insert into industries(ordervalue,name) values(" + lines[0] +",'" + lines[1].gsub("\"", "") +"');"
    #puts sql  
    dbh.query(sql)    
  }

  puts "Server version: " + dbh.get_server_info


rescue Mysql::Error => e
  puts "Error code: #{e.errno}"
  puts "Error message: #{e.error}"
  puts "Error SQLSTATE: #{e.sqlstate}" if e.respond_to?("sqlstate")
ensure
  # disconnect from server
  dbh.close if dbh
end
   发表时间:2009-07-10  
用activerecord呀......
前几天写的一个:

#平台:ruby 1.8.6
#需要下载activerecord库
#gem install activerecord
require 'rubygems'  
require 'activerecord'  
require 'yaml'  
require 'logger'  
#配置数据库连接信息 
dbconfig = YAML.load(DATA.read)["lawyer"] 
ActiveRecord::Base.establish_connection(dbconfig)  
#数据库log
ActiveRecord::Base.logger = Logger.new(File.open('database.log', 'a'))  
#构造Lawyer模型
class Lawyer < ActiveRecord::Base;end 
class String
  #转换Lawyer Name的格式
 def format_name
   self.split(/,/).reverse.join(" ").tr("'","")
 end
end
#获取var_list.html文件内容
html = open("bar_list.html").read
#构造匹配所需内容的正则表达式
reg =/
<tr\s+class="[^"]+">
\s*
<td><a\s+href="[^"]+"\s+class="[^"]+">(.*?)<\/a><\/td>
<td>(.*?)<\/td>
<td>(.*?)<\/td>
<td>(.*?)<\/td>
<td>(.*?)<\/td>
\s*
<\/tr>
/xm
#用正则获取所需内容并保存在lawyer_array数组中
lawyer_array = html.scan(reg)
#转换数组为哈希,以便存入mysql
lawyer_hash = lawyer_array.map do |la|
  {
   :lawyer_name => la[0].format_name, #格式化Name
   :status =>la[1],
   :bar_number => la[2],
   :city =>la[3],
   :admission_date =>Date.parse(la[4]) #把字符形式转换成Date
   }
 end
 #存入mysql
lawyers = Lawyer.create lawyer_hash
#以下为数据库连接配置,请根据自己的账户和密码设置..
__END__
lawyer:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: lawyer
  pool: 5
  username: root
  password:
  host: localhost
  
  

0 请登录后投票
   发表时间:2009-07-10  
嗯,不错,你的这个更人性化了。
而我的方法更近原始,哈哈
0 请登录后投票
   发表时间:2009-07-10  
用rake+activerecord
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics