<commit_before>require 'dotenv'
require 'pg'
require 'csv'
require 'aws-sdk'

Dotenv.load

# DBに接続する
conn = PG::connect(:host => ENV["PG_HOST"], :dbname => ENV["PG_DBNAME"], :port => ENV["PG_PORT"])
begin
  # conn を使い PostgreSQL を操作する
  p '接続できました'
  result = conn.exec('SELECT * FROM customer')
  # S3に保存するために体裁を整える
  filename = ENV["CSV_FILE_NAME"] + Date.today.to_s + ".csv"
  CSV.open(filename, "wb") do |csv|
    # ここもっとうまくできないかしら？
    temp = []
    result.each do |row|
      temp.push(row['id'])
      temp.push(row['name'])

      # CSVに1行ずつ出力する
      csv << temp

      temp.clear
    end
  end

  # S3に接続してCSVファイルを保存する
  s3 = AWS::S3.new(
    :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
    :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
  )
  # TODO S3上に同名のファイルが存在した場合、削除してからアップロードする？
  s3.buckets[ENV['AWS_S3_BUCKET_NAME']].objects[File.basename(filename)].write(:file => File.expand_path(filename))
ensure
  # データベースへのコネクションを切断する
  conn.finish
  p '切断しました'
end<commit_msg>envファイルに指定。CSV出力の改善 #1 #3<commit_after>require 'dotenv'
require 'pg'
require 'csv'
require 'aws-sdk'

Dotenv.load

# DBに接続する
conn = PG::connect(:host => ENV["PG_HOST"], :dbname => ENV["PG_DBNAME"], :port => ENV["PG_PORT"])
begin
  # conn を使い PostgreSQL を操作する
  p '接続できました'
  result = conn.exec("SELECT * FROM #{ENV['TARGET_TABLE']}")
  # S3に保存するために体裁を整える
  filename = ENV["CSV_FILE_NAME"] + Date.today.to_s + ".csv"
  CSV.open(filename, "wb") do |csv|
    result.values.each do |row|
      csv << row
    end
  end

  if ENV['USE_AWS'] == 'true'
    # S3に接続してCSVファイルを保存する
    s3 = AWS::S3.new(
      :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
      :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
    )
    # TODO S3上に同名のファイルが存在した場合、削除してからアップロードする？
    s3.buckets[ENV['AWS_S3_BUCKET_NAME']].objects[File.basename(filename)].write(:file => File.expand_path(filename))
  end
ensure
  # データベースへのコネクションを切断する
  conn.finish
  p '切断しました'
end
{'fraction_non_alphanumeric': 0.15464452516865596, 'fraction_numerical': 0.008822003113648157, 'mean_word_length': 4.127659574468085, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3028017', 'n_tokens_mistral': 950, 'n_tokens_neox': 927, 'n_words': 133}