Ruby读excel写入mysql
安装mysql2
打开cmd:
gem install mysql2
代码
require 'win32ole'
require 'mysql2'
class String
def addslashes
self.gsub(/\'/,"'")
end
end
begin
i = 1
excel = WIN32OLE::new('excel.Application')
workbook = excel.Workbooks.Open('C:\Users\devil\Desktop\en.xls')
client = Mysql2::Client.new(:host => "localhost", :username => "root", :database=>'encn', :encoding => 'utf8')
loop do
worksheet = workbook.Worksheets(i)
worksheet.Select
data=[]
worksheet.UsedRange.Value.each do |v|
next if v[0] == "Keyword"
data << v
end
data.each do |one|
sql = "insert into words values(null,'#{one[0].to_s.addslashes}','#{one[1].to_s.addslashes}')"
puts sql
client.query(sql)
end
i=i+1
end
rescue=> ex
puts ex.message,"\n"
en
一点分析
首先,ruby for windows安装后已经集成了对office文件格式的文件的读取,称之为win32ole
Win32ole为标准Ruby发行版的一部分。Win32ole是访问Windows自动化的接口,可以让Ruby和Windows应用进行交互。具体说来Win32ole可以操作Word,Excel,IE,Outlook等。
此时需要require进来,当然还有还有是mysql接口
require 'win32ole'
require 'mysql2'
然后,对String类扩展,方便转义sql语句中的关键符号单引号(英文单词中很多),将其转化为html转义字符!仿照php的方法名,addslashes。
class String
def addslashes
self.gsub(/\'/,"'")
end
end
新建一个win32应用接口,并设置为excel应用:
excel = WIN32OLE::new('excel.Application')
打开文件,输入绝对路径,相对路径可能会出问题!
workbook = excel.Workbooks.Open('C:\Users\devil\Desktop\en.xls')
选择excel中的worksheet:
worksheet = workbook.Worksheets(i)
worksheet.Select
打开一个mysql连接
client = Mysql2::Client.new(:host => "localhost", :username => "root", :database=>'encn', :encoding => 'utf8')
代码中使用两次循环,
第一个循环遍历excel的worksheet使用无限循环loop(ruby的无限真好用)
第二次循环是针对:worksheet.UsedRange.Value.each这个遍历器的,它会按行寻找所有已用表格,并按照行写入数组,行里的每一列(格子)又是一维度的数组。将其克隆到data变量中
其实上面一步完全可以省略直接写入到数据库即可!不需要复制到data中
另外,整个loop大循环放在一个异常捕获代码块中,通过rescue捕获异常!
Ruby读excel写入mysql的更多相关文章
- spark读文件写入mysql(scala版本)
package com.zjlantone.hive import java.util.Properties import com.zjlantone.hive.SparkOperaterHive.s ...
- python3爬取”理财大视野”中的股票,并分别写入txt、excel和mysql
需求:爬取“理财大视野”网站的排名.代码.名称.市净率.市盈率等信息,并分别写入txt.excel和mysql 环境:python3.6.5 网站:http://www.dashiyetouzi.co ...
- python2.7爬取豆瓣电影top250并写入到TXT,Excel,MySQL数据库
python2.7爬取豆瓣电影top250并分别写入到TXT,Excel,MySQL数据库 1.任务 爬取豆瓣电影top250 以txt文件保存 以Excel文档保存 将数据录入数据库 2.分析 电影 ...
- Flink RichSourceFunction应用,读关系型数据(mysql)数据写入关系型数据库(mysql)
1. 写在前面 Flink被誉为第四代大数据计算引擎组件,即可以用作基于离线分布式计算,也可以应用于实时计算.Flink的核心是转化为流进行计算.Flink三个核心:Source,Transforma ...
- java实现excel与mysql的导入导出
注意:编码前先导入poi相关jar包 1 /** * 读excel 到list * * @param file excel file * @param fields 字段数组 * @return * ...
- Spark读HBase写MySQL
1 Spark读HBase Spark读HBase黑名单数据,过滤出当日新增userid,并与mysql黑名单表内userid去重后,写入mysql. def main(args: Array[Str ...
- python中使用xlrd读excel使用xlwt写excel
原文地址 :http://www.bugingcode.com/blog/python_xlrd_read_excel_xlwt_write_excel.html 在数据分析和运营的过程中,有非常多的 ...
- SQLBulkCopy使用实例--读取Excel写入数据库/将 Excel 文件转成 DataTable
MS SQL Server 提供一个称为 bcp 的流行的命令提示符实用工具,用于将数据从一个表移动到另一个表(表可以在不同服务器上). SqlBulkCopy 类允许编写提供类似功能的托管代码解决方 ...
- ruby使用DBI连接MySQL数据库发生异常:in `error': Can't connect to MySQL server on 'localhost' (10061) (DBI::DatabaseError)
Ruby使用DBI连接MySQL数据库一般为: require "dbi" dbh = DBI.connect("dbi:Mysql:test:localhost&quo ...
随机推荐
- 腾讯云数据库团队:SQL Server 数据加密功能解析
数据加密是数据库被破解.物理介质被盗.备份被窃取的最后一道防线:数据加密,一方面解决数据被窃取安全问题,另一方面有关法律要求强制加密数据:SQL Server 的数据加密相较于其他数据库,功能相对完善 ...
- Android开发使用的常见第三方框架
1.SlidingMenu 官网:https://github.com/jfeinstein10/SlidingMenu 网友使用:http://blog.csdn.net/yangyu2012122 ...
- Octave Tutorial(《Machine Learning》)之第一课《数据表示和存储》
Octave Tutorial 第一课 Computation&Operation 数据表示和存储 1.简单的四则运算,布尔运算,赋值运算(a && b,a || b,xor( ...
- TimeUnit枚举类
TimeUnit是 java.util.concurrent 中的一个枚举类.一般让线程进行睡眠时使用: TimeUnit.MILLISECONDS.sleep(100); 比如上面一行代码表示让当 ...
- MyBatis极速入门开发手册(2017-2-6更新)
前言: 本篇文章对我的学习内容做一个归纳梳理,同时也记录一些学习过程中遇上的问题及注意事项等等,可以帮助新入门的朋友们消除一些误区与盲区,希望能帮上一些正在学习的朋友们.在编写时会引用一些mybati ...
- X64系统下IIS运行ASP网站HTTP500错误 【安装FoxMail Server时出现】
错误如上 解决办法 使用管理员模式运行CMD 输入cscript C:\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitA ...
- 零件库管理信息系统设计--part03:管理员登录部分设计
兄弟们,我又回来啦! 上次我把表建完了.今天来点干货,我们用ssm框架来先简单实现一下管理员的登录功能. 在实现之前,我对user表(管理员表)做了些简单的修改,先来看看: 忽略哪些蓝色的马赛克和乱输 ...
- iOS开发之instancetype
instancetype和id使用方法类似,但他们还有不同点: (1)instancetype在类型表示上,跟id一样,可以表示任何对象类型 (2)instancetype只能用在返回值类型上,不能像 ...
- iOS开发之应用程序启动图片规格
一个app在启动过程中会全屏显示叫做Default.png的图片 各种规格Default的使用场合: Default.png:非retina-iPhone屏幕,320x480 Default@2x.p ...
- 开始学习yii2第一天
今天在朋友圈看到一条转发,内容是根据招聘网站的要求,列举了需要一个php工程师具体需要哪些技能 框架要求是yii2 出现的最多 已经出来工作了快半个月了,感觉工资还是少的可怜,而且我也好想去张江, 所 ...