株のシステムトレードをしよう - 1から始める株自動取引システムの作り方

株式をコンピュータに売買させる仕組みを少しずつ作っていきます。できあがってから公開ではなく、書いたら途中でも記事として即掲載して、後から固定ページにして体裁を整える方式で進めていきます。

DBへCSVをインポートするツールを作っている その5 - Rubyスクリプトができた

how-to-make-stock-trading-system.dogwood008.com

昨日の続き。後述のスクリプトを実行すると、PostgreSQLへCSVからインポートできた。

DBeaverでPostgreSQLの中身を覗いた
DBeaverでPostgreSQLの中身を覗いた

後日、全体像をGitHubへアップロードする。

スクリプト

# import.rb

require 'pg'
require './sbi'

DB_HOST = ENV.fetch('DB_HOST', 'db')
DB_PORT = ENV.fetch('DB_PORT', 5432)
DB_USER = ENV.fetch('DB_USER', 'postgres')
DB_PW = ENV.fetch('DB_PW', 'postgres')

# https://deveiate.org/code/pg/PG/Connection.html#method-c-new
conn = PG.connect(
  host: DB_HOST,
  port: DB_PORT,
  user: DB_USER,
  password: DB_PW,
)

stock_code = 7974
date = '2021-09-09'
file_path = "./#{stock_code}_#{date}.csv"

enc = PG::TextEncoder::CopyRow.new

conn.exec(%{CREATE TABLE IF NOT EXISTS stock_#{stock_code} (
  datetime timestamp NOT NULL,
  volume int NOT NULL,
  price float NOT NULL
);})

conn.copy_data("COPY stock_#{stock_code} FROM STDIN", enc) do
  Sbi.new(file_path).each_line do |line|
    conn.put_copy_data line
  end
end

(C) 2020 dogwood008 禁無断転載 不許複製 Reprinting, reproducing are prohibited.