PostgreSQL

データベースバージョンアップ

LINEで送る
Pocket

昨日データーベースPostgreSQLのバージョン
アップを行いました
それに伴いいろいろな操作を行いました
その間ご覧いただいた方にはご不便/ご迷惑を
お掛けし申し訳ありませんでした

PostgreSQLのバージョンアップそのものは
少しトラブルもありましたが予定時間より短時間
で終了し正常に動作していましたがチューニング
をしよう APCもインストールしよう となり
結果アパッチの再起動を長時間にかけて何度か
行いました

現在使用中のサーバーはメモリ1GですがAPCの
画面で確認すると14%程度しか使用していません
昨日確認したなかでの最高でも19% 調べていません
がまだまだデータベースに割り当ててもよいような
気がしますのでもう少し勉強してまたチューニング
しようと思っています
商品点数3200件強 規格は多いもので1点390

より快適に操作できるよう心がけてまいります
今後ともよろしくお願いいたします

本店ECCUBEを最新バージョンに入れ替え
オーダーメイドの表彰楯を更新していく予定です

LINEで送る
Pocket

EC-CUBE オプション価格の設定(変更)

LINEで送る
Pocket

弊社にて扱っているトロフィーは上部の人形を用意された
104種類の中から選択ができます
人形により価格が異なる為ご購入時に価格が変更できれば便利です
表題のショッピングカートEC-CUBEでは104種類の選択肢の登録は
簡単なのですが価格はその104種類1点1点入力しなくてはなりません

TO-3070という商品ですとサイズがA~Jまであり Aに104ヶの価格設定
Bに104ヶの価格設定 Cに と1つの商品だけでかなりの量となります
あまり大変なのでSQLで価格の変更(設定)ができないかと調べて
いましたら以下で変更できることが分かりました
★データベース PostgreSQL EC-CUBEは2.12

UPDATE dtb_products_class SET price02=1000 WHERE product_class_id=128;

128のIDのprice02(価格)を1000(千円)にしろという記述です
price02=1000 商品の価格
product_class_id=128; 価格変更したいオプションのID

SQLで変更はできますがこれだけではやはり大変です 沢山の価格を
変更するにはその数量上記のSQLが必要です そこでエクセルと書換え
ソフト(TextSS)を使用して作成します
まずはdtb_products_classのデータをCSVでエクスポート

エクセルにデータ挿入
1.UPDATE dtb_products_class SET price02= をAの列に必要分
2.Bの列には設定したい価格(dtb_products_classのprice02 をコピーしエクセルで計算)
3.WHERE product_class_id= をDのセルに必要分
4.Eの列にはオプションID(dtb_products_classのproduct_class_idをコピー)
5.「;」をFの列に必要分(「」は不要)

次に書換え用のフォルダを作成(ここではKAKIKAE)
AとBの列をテキストエディタにコピーし NO1.txtとしKAKIKAEフォルダに保存
D/E/Fの列をテキストエディタにコピーし NO2.txtとしKAKIKAEフォルダに保存
ここで書換えソフトを使用しNO1.txtとNO2.txtのタブ区切りになっている箇所の
タブを削除します 検索する文字列のところにタブを入れ 置換する文字列の
ところは何も入力せず変換するとタブが無くなり

UPDATE dtb_products_class SET price02= 1000 が
UPDATE dtb_products_class SET price02=1000 に変換されます
WHERE product_class_id= 128 ; が
WHERE product_class_id=128; に変換されます

次はNO1.txtのデータをAの列にコピーしNO2.txtのデータをBの列にコピー
A/B列のデータをテキストエディタにコピーしNO3.txtとしてKAKIKAEフォルダに保存
上記と同じ変換をしますが置換する文字列に今度は半角のブランクを入力します

UPDATE dtb_products_class SET price02=1000 WHERE product_class_id=128; が
UPDATE dtb_products_class SET price02=1000 WHERE product_class_id=128; に変換され
sqlを実行するデータになりました

NO3.txtのデータをphpPgAdminのsqlにコピーし実行します

一瞬の内に価格が入れ換わります 4000行ぐらい一度に実行しましたが
ストレスや待ち時間もなく入れ換わりました
この方法はある商品だけ暫くバーゲン価格にしたい、またバーゲン価格で設定
したものを元の価格に戻したいなどにもそのまま使用できます
削除や追加をしませんのでproduct_classの中が膨大に膨れあがることもありません

膨大に で思い出しましたが すでに一杯あって整理したい場合は
シーケンスの値を大きな数字に変更しオプションを再登録し設定した数値より
小さい番号のものを削除します
(オプションの無いものは削除しないように 商品が表示されなくなります)

具体的にはphpPgAdminでシーケンスを開きdtb_products_class_product_class_id_seq
のRestart valueに任意の数字を入力したのちオプションを全て再登録します

その後phpPgAdminでdtb_products_classのデータをcsvでエクスポートこのデータで
不要なものを削除します
次にphpPgAdminでdtb_products_classのテーブルを空にし、先ほど整理し保存した
csvをインポートします
イッキにやる必要はありませんのでシーケンス値を設定しあとは時間を見つけては
数点づつ再登録し、全部再登録できた時点で整理すれば無駄なデータを削除できます

上の価格変更はデータの並び順に注意してください

特にブログに書くほどのことではないと思いましたが 私自身、色々な記事に
助けられていますのでひょっとして誰かのヒントになるかもしれないと思い
掲載しました もう書く必要もないと思いますがお約束で
(バックアップ・自己責任)

LINEで送る
Pocket