- 浏览: 290721 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
masuweng:
如何给新人机会 -
masuweng:
多sql结果集按列合并新结果报表实现方案 -
Ahe:
赞
坚持长跑方能赢 -
masuweng:
好好好
程序员如何更好的了解自己所做的事情 -
小楠人:
laoguan123 写道楼主好,使用过一些excel导入导出 ...
excell导入导出
方法一:直接在mysql中查找到数据然后遍历保存到oracle中
方法二:
在需要大量数据同步的情况下采用了以下方法技术
一:在mysql库中读取数据写入到ctl文件中
二:如果mysql和oracle不在同一台服务器,需要配置解决夸服务器复制文件的问题
三:将ctl文件拿过来用sqlldr工具写入到对应oracle数据库中。
首先可以定义一个ctl文件头:
例如:
方法三:
采用ETL工具很好用。
#load wifi_units data def load_wifi_units_data(now) wifi_units = Wifi::MobileUnit.find(:all,:conditions=>"length(sta_mac) > 15") puts "total wifi_units: #{wifi_units.length}" wifi_infos = Array.new wifi_units.each do |wifi_unit| wifi_info = WlanWifiUnits.new(:sampletime => now) wifi_info.ap_dn = wifi_unit.ap_dn wifi_info.mac = wifi_unit.mac wifi_info.first_seen = wifi_unit.first_seen wifi_info.last_seen = wifi_unit.last_seen wifi_info.duration = wifi_unit.duration wifi_info.sta_mac = wifi_unit.sta_mac wifi_info.sta_ip = wifi_unit.sta_ip wifi_info.sta_power = wifi_unit.sta_power wifi_info.sta_rssi = wifi_unit.sta_rssi wifi_info.sta_channel = wifi_unit.sta_channel wifi_info.sta_vlan = wifi_unit.sta_vlan wifi_info.sta_ssid = wifi_unit.sta_ssid wifi_info.sta_rxframe = wifi_unit.sta_rxframe wifi_info.sta_txframe = wifi_unit.sta_txframe wifi_info.sta_dropframe = wifi_unit.sta_dropframe wifi_info.sta_rxbytes = wifi_unit.sta_rxbytes wifi_info.sta_txbytes = wifi_unit.sta_txbytes wifi_info.sta_dropbytes = wifi_unit.sta_dropbytes wifi_info.sta_noise = wifi_unit.sta_noise wifi_info.sta_noise_rate = wifi_unit.sta_noise_rate wifi_infos << wifi_info end WlanWifiUnits.transaction do wifi_infos.each do |wifi_info| p "importing: #{wifi_info.ap_dn}" wifi_info.save end end Report.deal_wifi_perf(now) p "import wifi_units infos over!" end
方法二:
在需要大量数据同步的情况下采用了以下方法技术
一:在mysql库中读取数据写入到ctl文件中
二:如果mysql和oracle不在同一台服务器,需要配置解决夸服务器复制文件的问题
三:将ctl文件拿过来用sqlldr工具写入到对应oracle数据库中。
首先可以定义一个ctl文件头:
例如:
OPTIONS(ERRORS=100000) Load DATA INFILE * TRUNCATE INTO TABLE MIT_SSIDS Fields terminated by '|' TRAILING NULLCOLS (id,cn,dn,ap_id,ssidIndex,objectclass,text,radio_no,ssidEnabled,ssidHidden, staIsolate,dot11Auth,security,authenMode,securityCiphers,vlanId,maxSimultUsers) BEGINDATA
#往sql文件里写数据select..into outfile def self.build_wifi_into_outfile(src_file) connection.execute("select now() sampletime,ap_dn,mac,first_seen,last_seen,duration, sta_mac,sta_ip,sta_power,sta_rssi,sta_channel,sta_vlan,sta_ssid,sta_rxframe, sta_txframe,sta_dropframe,sta_rxbytes,sta_txbytes,sta_dropbytes,sta_noise, sta_noise_rate from wifi_mobile_units into outfile '#{src_file}' fields escaped by '' terminated by '|' lines terminated by '%^&'") end
desc 'report to load wifi_units data.' namespace :wifi_units do task :import => :environment do puts "usage: rake wifi_units:import is_local=0 src_path='/var/lib/mysql/' imp_path='/opt/mobile/webport/tmp/hourly_import'" is_local = ENV['is_local'] is_local ||= 0 src_path = ENV['src_path'] src_path ||= "/var/lib/mysql/" imp_path = ENV['imp_path'] imp_path ||= "/opt/mobile/webport/tmp/hourly_import" start_time = Time.now puts "====================================" puts "start_time: #{start_time} " puts "====================================" now = Time.now now1 = Time.now puts "(#{now1}):begin to import wifi_units data..." load_wifi_units_data2(is_local,src_path,imp_path,now) puts "import wifi_units data successfully." end_time = Time.now puts "====================================" puts "end_time: #{end_time} " puts "total_time : #{end_time - start_time}" puts "====================================" end #load wifi_units data2 def load_wifi_units_data2(is_local,src_path,imp_path,now) time_start = Time.now src_file = src_path+"/wifi_data_import_#{now.strftime("%H")}.sql" p "starting output file #{src_file}..." src_config = Rails.configuration.database_configuration["development"] src_ip = src_config["host"] rm_com = "rm -rf #{imp_path}/wifi_data_import_#{now.strftime("%H")}.sql" p rm_com system rm_com#生成一个空SQL文件 if is_local == '0' #两服务器不在一起(采用scp) remove_com = "ssh root@#{src_ip} \"rm #{src_file}\"" p remove_com system remove_com #将文件拷贝到相关目录下 Wifi::MobileUnit.build_wifi_into_outfile(src_file) copy_com = "scp root@#{src_ip}:#{src_file} #{imp_path}/wifi_data_import_#{now.strftime("%H")}.sql" p copy_com system copy_com else #两服务器在一起(采用cp) remove_com = "rm -rf #{src_file}" p remove_com system remove_com Wifi::MobileUnit.build_wifi_into_outfile(src_file) copy_com = "cp #{src_file} #{imp_path}/wifi_data_import_#{now.strftime("%H")}.sql" p copy_com system copy_com #将文件拷贝到相关目录下 end head_file = "#{RAILS_ROOT}/config/wifi_data_head.ctl" #获取定义好的文件头 data_file = "#{imp_path}/wifi_data_import_#{now.strftime("%H")}.sql" #获取拷贝过来的数据文件 format_com = "sed -i ':a;N;$ s/\\\n//g;ba' #{data_file}" p format_com system format_com format_com2 = "sed -i -e 's/NULL//g' -e 's/\\\\//g' -e 's/%^&/\\\n/g' #{data_file}" p format_com2 system format_com2 #对数据文件过滤 sqlldr_file = "#{imp_path}/wifi_data_import_#{now.strftime("%H")}.ctl" #生成一个新文件 cat_com = "cat #{head_file} #{data_file} > #{sqlldr_file}" #组装文件 p cat_com system cat_com #组装文件运行 time_end = Time.now puts "total_time for build file & copy to ./tmp/hourly_import :#{time_end - time_start}" time_start = Time.now oracle_config = Rails.configuration.database_configuration["wifi_rms"] username = oracle_config["username"] password = oracle_config["password"] service = oracle_config["service"] sqlldr_com = "sqlldr userid=#{username}/#{password}@#{service},control=#{sqlldr_file},log=#{RAILS_ROOT}/log/wifi_data_import#{now.strftime("%H")}.log" p sqlldr_com system sqlldr_com #sqlldr读取导入ORACLE数据库 time_end = Time.now puts "total_time for sqlldr import wifi infos :#{time_end - time_start}" if now.min >=0 and now.min < 59 p "calling deal_wifi procedure" time_start = Time.now Report.deal_wifi_perf(now) p "import wifi_units infos over!" time_end = Time.now puts "total_time for deal wifi infos :#{time_end - time_start}" end end end
方法三:
采用ETL工具很好用。
发表评论
-
git仓库创建
2020-09-04 15:33 660推送现有文件夹 cd existing_folder git ... -
puma高并发
2020-08-19 09:31 447nginx突发大量502报错 top看一下,cpu的占用并不高 ... -
searchkick
2019-04-10 11:30 0# 通用查询块(条件) def general_ ... -
导入线下excell业务数据按权重匹配线上数据
2019-03-07 11:00 841业务场景:(系统间还没有接口对调,订单号暂时需要线下处理) 线 ... -
两对象同时映射一对一和一对多
2019-02-20 10:14 768class Kpi::Team < Applicat ... -
ruby一些类加载方式
2018-12-21 10:12 541require_dependency 'order/sco ... -
基于ruby的gem remotipart的异步上传文件
2018-12-21 10:11 505针对某一对象保存实例化之前,异步上传图片保存。 gem ' ... -
基于html2canvas的长图分享
2018-12-21 10:11 1123<span class="ui label ... -
rails处理上传读取excell&生成excell
2018-12-20 14:15 880gem 'spreadsheet' gem 'roo', ... -
基于ruby Mechanize的爬虫
2018-12-20 13:09 607def self.sang_carwler ... -
一些常用加密方式
2018-12-20 13:02 708sign = OpenSSL::Digest::SHA256. ... -
ruby 调用restful接口示例
2018-12-20 12:02 895链接参数中添加token def self.query_p ... -
rails错误日志记录
2018-12-19 14:41 685Rails中对日志的处理采用的是“消息-订阅”机制,各部分组件 ... -
railsAPI接收Base64文件
2018-12-18 11:05 1012tmp_dir = " ... -
ruby 调用savon接口示例
2018-12-18 10:51 950例子一 module Api module Aob ... -
一些sql经验
2018-12-11 19:55 804安装了mysql5.7,用group by 查询时抛出如下异常 ... -
关于国际商城现货展示与购物车的费用设计
2018-11-15 18:34 413关于国际商城现货展示 ... -
基于多线程的全局变量
2018-10-31 19:50 1079def current_nation def ... -
hash最小值过滤算法
2018-10-31 09:52 1055[["数量","包装" ... -
阿里云裸机部署rails运用
2018-10-08 20:33 1316登录阿里云后首先 sudo apt-get update a ...
相关推荐
本文简单介绍了Ruby On Rails的安装步骤以及MySQL数据库的配置方法,并介绍了几个官方阅读资源。
Ubuntu 11.04安装Ruby on rails 连接MySQL数据库.pdf
NULL 博文链接:https://like-eagle.iteye.com/blog/994634
rails连接oracle需要的驱动 执行命令:C:\> ruby 文件名.rb <br>
一个用Ruby on Rails搭建的图片分享的网站项目.完整源代码
Ruby 的现代、简单且非常快速的 Mysql 库 - 绑定到 libmysql Mysql2 gem 旨在服务于连接、查询和迭代结果的极其常见的用例。那里的一些数据库库作为已经很复杂的可用 C API 的直接 1:1 映射。这个不是。
rails 项目起步示例 同新手共同进步
本文讲解如何从一个Rails应用程序连接到Oracle和与其相关的验证和性能问题。要连接到Oracle数据库,用户必须安装 Ruby/Oracle 调用接口 (OCI8) 库——一个基于 Ruby/DBI (数据库接口模块)的数据库驱动程序。Ruby...
ruby on rails 安装 组件下载 连接mysql mssql等数据库 包含一个完整的一对多数据库例子方案
本人学习总结的ruby on rails 3.1.0数据库类查询方法,比较全了
[Ruby_on_Rails][資料庫]_03._[Windows]_MySQL安裝
非Rails(和非Ruby)项目中的Rails迁移。 什么是新的 在6.x版本中,由于增加了对Rails 6迁移的支持。 在5.x版本中,我们转向使用Rails 5迁移,而不是维护我们自己的迁移相关代码。 使用Rails 5迁移几乎可以做的任何...
Apartment - Rack (和Rails) 应用的数据库多租户
现在它仅支持mysql和postgresql(远程和本地) 将资产远程同步到本地,将本地同步到远程命令mysql,mysqldump(或pg_dump,psql),bzip2和unbzip2(或gzip)必须位于您的PATH中随意分叉并添加更多的数据库支持或新...
Ruby 版数据库连接池, 可以参考。 数据库是postgresql
NULL 博文链接:https://zyn-zyn.iteye.com/blog/1186887
docker-rails6-mysql8 启动Rails设置 跑新轨道 $ docker-compose run web rails new . --force --no-deps --database=mysql --skip-test --webpacker docker镜像构建 $ docker-compose build 编辑database.yml ...
支持rails2.0以上版本的配置说明,文档从我自己的博客中整理出来,不愿意用资源分的朋友可以去我的博客看: http://wudihamagong.spaces.live.com/ 或者 http://blog.csdn.net/abcdefg0 ^_^
适用于Rails 4.2+安装将此行添加到您的应用程序的Gemfile中: gem 'multiverse'入门在此示例中,我们将为电子商务目录提供一个单独的数据库,我们将其称为catalog 。 第一步是生成必要的文件。 rails generate ...
[Ruby_on_Rails][資料庫]_02._[Mac]_MySQL安裝