一日一回株価のcsvデータをアップロード(DBにインサート)するページを作成しています
ただ単にDBに値を入れるものは作成できているのですが'-'が入っていることがあり、その時にそのカラムには前日の同カラムのデータを入れるというロジックを組みたいのですが全くわかりません...
ご教授(ヒント)をいただけると幸いです。
**SC 名称 市場 業種 日時 株価 前日比 前日比(%) 前日終値 始値 高値 安値 VWAP 出来高 出来高率 売買代金(千円) 時価総額(百万円) 値幅下限 値幅上限 高値日付 年初来高値 年初来高値乖離率 安値日付 年初来安値 年初来安値乖離率
1 日経平均株価(日経225) 東証 株価指数 2019/6/14 15:00 21116.89 84.89 0.4 21032 21049.41 21119.73 20971.18 - - - - - - - - - - - - -
**
この場合2019/6/13 15:00のものを入れたい。データがない場合は0を入れる処理をしたい
(追記)
DBのテーブルは①SCをPKとした親テーブル、②csvがそのままインサートされるもの(下のcreate文のもの)、③②を使って絵結果を格納する(計算してインジケータ値などを格納したい)の三つです
/* トランザクション処理 */ $pdo->beginTransaction(); try { $fp = fopen($tmp_name, 'rb'); while (($row = fgetcsv($fp)) !== FALSE) { if ($row === array(null)) { // 空行はスキップ continue; } /*ここに"-"が格納されていた場合の処理を記載する*/ for($i = 0; $i <= 25; $i++){ if($row[i] === '-'){ $row[i]=0; } } /*echo($row[1]);*/ if (count($row) > 10000) { // カラム数が異なる無効なフォーマット throw new RuntimeException('Invalid column detected'); } $executed = $stmt->execute($row); } if (!feof($fp)) { // ファイルポインタが終端に達していなければエラー throw new RuntimeException('CSV parsing error'); } fclose($fp); $pdo->commit(); } catch (Exception $e) { fclose($fp); $pdo->rollBack(); throw $e; } コード
table
create
1 SC int(4) NOT NULL "証券コード", 2 name varchar(32) NOT NULL "会社名", 3 market varchar(16) NOT NULL "市場", 4 industry varchar(16) NOT NULL "産業", 5 date datetime NOT NULL "日にち", 6 today_close double "当日終値", 7 the_day_before_ratio double "前日との幅", 8 the_day_before_ratio_per double "前日幅%", 9 ago_close double "前日終値", 10 today_open double "始値", 11 today_high double "高値", 12 today_low double "安値", 13 vwap double "vwap", 14 volume double "出来高", 15 volume_per double "出来高%", 16 trading_value double "売買代金", 17 market_capitalization double "時価総額", 18 price_range_low_limit double "値幅下限", 19 price_range_high_limit double "値幅上限", 20 high_date datetime "高値日", 21 year_to_date_high_price double "年初来高値", 22 year_to_date_high_price_deviation_rate double "年初来高値乖離", 23 low_date datetime "安値日", 24 year_to_date_low_price double "年初来安値", 25 year_to_date_low_price_deviation_rate double "年初来安値乖離" 26 27); 28コード
回答2件
あなたの回答
tips
プレビュー