EC-CUBE4로 회원 데이터를 대량으로 작성
환경
・EC-CUBE4.0.3
· PostgreSQL10
소개
EC-CUBE로 회원 데이터나 상품/수주 데이터를 대량으로 만들 때는, EC-CUBE3계의 무렵부터 nanasess씨 작성의 Faker를 사용한
GenerateDummyDataCommand
커멘드에 대단히 신세를지고 있습니다.기본적으로 말해,
GenerateDummyDataCommand
로 부족합니다만, 이번은 다른 방법으로, 50만건, 100만건의 회원 데이터를 바삭하게 만드는 방법을 싣습니다.개요
50만 건의 회원 데이터를 만드는 것은 50만 행의 CSV 파일을 만들고 '\COPY' 명령을 흘리는(PostgreSQL의 경우)라는 것에 귀착합니다.
이번에는 수만 개의 파일을 신속하게 작성할 수있는 파이썬으로 CSV 파일을 만듭니다.
Google 공동체에서 실행
Jupyter Notebook 코드는 여기입니다.
Playground에서 열기를 클릭하고 '드라이브로 복사' 링크를 눌러 사용자 환경에서 실행할 수 있습니다.
Jupyter Notebook의 흐름
ec-cubecreatecustomer.ipynb
# まずはインポート
import numpy as np
import pandas as pd
import random, string
이 근처는 좋네요 w Google Colab에서 마지막으로 CSV를 다운로드하기 위한
files
도 이 후 임포트 하고 있습니다.sample_customer_ja = pd.DataFrame([
["髙﨑","棗","タカサキ","ナツメ","[email protected]","2","1993/10/25",
["𠮷田","景子","ヨシダ","ケイコ","[email protected]","2","1952/4/30",
["草彅","剛","クサナギ","ツヨシ","[email protected]","1","1975/8/31",
["坪内","柚月","ツボウチ ユヅキ","ユヅキ","[email protected]","2","1991/8/30",
["奥平","克洋","オクダイラ カツヒロ","カツヒロ","[email protected]","","1986/12/29",
["藤代","敏嗣","フジシロ トシツグ","トシツグ","[email protected]","1","1967/7/4",
샘플 데이터를 열거하고 있습니다. 사다리 높이나 아래의 막대가 긴 길이라든지, 영어명이라면, (쉼표)라든지 테스트 데이터로서 넣고 있습니다.
이러한 테스트 데이터를
np.random.randint
로 추출하고 dtb_customer의 각 필드에 map
로 넣습니다.import time
start = time.time()
customer_data['name01'] = customer_data['zseed'].map(random_name01)
customer_data['name02'] = customer_data['zseed'].map(random_name02)
customer_data['kana01'] = customer_data['zseed'].map(random_kana01)
customer_data['kana02'] = customer_data['zseed'].map(random_kana02)
customer_data['postal_code'] = customer_data['zseed'].map(random_zip)
customer_data['pref_id'] = customer_data['zseed'].map(random_prefid)
customer_data['addr01'] = customer_data['zseed'].map(random_addr01)
customer_data['addr02'] = customer_data['zseed'].map(random_addr02)
customer_data['email'] = customer_data['zseed'].map(random_addr02)
customer_data['birth'] = customer_data['zseed'].map(random_birth)
end = time.time()
print(end-start, '秒')
시간을 측정하면 10만건으로 3분이었습니다.
customer_data = customer_data.drop('zseed', axis=1)
customer_data = customer_data.drop('language_cd', axis=1)
customer_data.to_csv('dtb_customer.csv', encoding="UTF-8", index=False)
files.download('dtb_customer.csv')
완성된 데이터에는 "seed"를 넣었으므로 불필요한 열을 삭제하고 CSV를 출력합니다.
Copy 명령
마지막으로
\COPY
명령을 실행합니다.ec403_db=# \COPY dtb_customer ( customer_status_id,sex_id,job_id,country_id,pref_id,name01,name02,kana01,kana02,company_name,postal_code,addr01,addr02,email,phone_number,birth,password,salt,secret_key,first_buy_date,last_buy_date,buy_times,buy_total,note,reset_key,reset_expire,point,create_date,update_date,discriminator_type) from '/var/www/html/dtb_customer.csv' CSV HEADER
이곳은 순식간이었습니다.
이상으로 dtb_customer에 대량 데이터가 만들어졌습니다.
Reference
이 문제에 관하여(EC-CUBE4로 회원 데이터를 대량으로 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takeuji/items/b336f889b10c68c59e07텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)