Skip to content

Instantly share code, notes, and snippets.

@ngs
Created December 30, 2011 14:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ngs/1540055 to your computer and use it in GitHub Desktop.
Save ngs/1540055 to your computer and use it in GitHub Desktop.
Script to import last LiveCycling workout onto another database

LiveCycling を使った長距離サイクリングの途中で iPhone の電池が切れてスペアで記録をとったので、そのデータをメインにコピーするために書きました。

sqlite3-ruby 依存です。gem install sqlite3 などしてインストールして下さい。

  1. スペア iPhone をコンピュータに接続し、log.sqlite をディスクトップなどに保存。log1.sqlite にリネームする。 ( 参考 )
  2. メイン iPhone からも上記と同じ方法で log.sqlite を取り出し、log2.sqlite にリネームする。
  3. このスクリプトを2つのファイルと同じディレクトリに設置。cli で実行する
#!/usr/bin/env ruby
require 'sqlite3'
db1 = SQLite3::Database.new('log1.sqlite')
db2 = SQLite3::Database.new('log2.sqlite')
db2.transaction
work = db1.get_first_row( "select * from SUMFIL order by workid desc limit 1" )
workid1 = work[0]
work[0] = nil
db2.execute( "insert into SUMFIL values (#{ ["?"] * work.size * "," })", work )
workid2 = db2.last_insert_row_id
db1.execute( "select * from LOGFIL where workid = ?", workid1 ) do |row|
row[0] = nil
row[row.size - 1] = workid2
db2.execute( "insert into LOGFIL values (#{ ["?"] * row.size * "," })", row )
end
db1.close
db2.commit
db2.close
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment