EC-CUBE4로 회원 데이터를 대량으로 작성

11201 단어 EC-CUBE4JupyterPython3

환경



・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에 대량 데이터가 만들어졌습니다.

좋은 웹페이지 즐겨찾기