itsource

MySQL Workbench 테이블 데이터 가져오기 마법사 매우 느림

mycopycode 2023. 9. 19. 21:02
반응형

MySQL Workbench 테이블 데이터 가져오기 마법사 매우 느림

2천만 개의 행과 2개의 열이 있는 csv 파일을 데이터베이스로 가져와야 하는데 MySQL Workbench의 데이터 가져오기 마법사로 이 작업을 수행하려고 하면 매우 느려서 아마 완료하는 데 1개월이 걸릴 것입니다.

좀 더 빠른 방법이 있어야 할 텐데요.

항상사용Load Data Infile거대한 데이터 집합에 대한 첫 번째 시도입니다.

Load Data Infile의 Mysql Manual 페이지.

이 질문에 대해 몇 가지 답변을 작성했지만, 동료 비교를 위해서는 Workbench와 Load Data Infile의 시간 비교 및 질문 내용을 참조하십시오.

이것은 대안입니다.CSV 데이터를 sql 스크립트에 덤프하면 코드를 몇 개 적어야 합니다.기본적으로 csv 데이터는 아래 명령과 유사하게 변환됩니다.
INSERT INTO TABLE_NAME values(1,2),(1,3),....;
이제 MySQL 셸 스크립트를 사용하고 사용합니다.SOURCE지휘권을
mysql> source C:/Users/Desktop/sql scripts/script.sql
수백만 개의 레코드에 대해 CSV를 직접 가져오는 것에 비해 데이터를 더 빨리 가져올 수 있습니다.

코드를 쓰고 싶지 않다면 HeidiSQL과 같은 다른 무료 GUI 클라이언트를 사용해보는 것을 추천합니다.MySQL Workbench보다 CSV/텍스트 파일을 훨씬 빨리 가져옵니다.

MySQL 워크벤치와 비슷한 문제가 있었습니다.제가 찾은 대안은 MySQL용 Toad(https://www.toadworld.com/m/freeware/1469) 입니다.

MySQL 관리자를 통해 원격 MySQL 서버에 연결하는 데 40분이 걸릴 것입니다.MySQL 서버 자체에서 업로드는 몇 분 정도 걸립니다.toad를 사용하면 몇 분 안에 원격 서버에 연결하여 업로드할 수 있습니다.HeidiSQL을 사용해 보았지만 수입하기에는 그다지 우호적이지 않았습니다.

데이터셋을 가져올 때 항상 파일의 데이터 로드를 선호하지만, =>을(를) 가져오기 전에 테이블 구조를 만들어야 한다는 불편함가져오기 마법사를 사용하면 csv 또는 json에서 즉시 새 테이블을 만들 수 있습니다.

제가 생각하기에 이렇게 느린 이유는 workbench에서 가져오기 마법사에 python을 사용하기 때문입니다.오류가 발생하면 가져오기 마법사 로그에서 python의 콘솔 로그임을 확인할 수 있습니다.

어떤 이유로든 구조를 만들지 않으려면 프로세스를 시작하면 csv에서 테이블을 만든 다음 프로세스를 종료합니다.그런 다음 테이블에서 모든 내용을 삭제하고 파일에 데이터를 로드합니다.이건 좀 추한 '핵'이지만 저한테는 통했어요.

다음 python 코드를 사용하여 csv 파일을 sql insert 파일로 변환할 수 있습니다.

import csv

def csv_to_sql_insert(csv_filename, table_name):
    with open(csv_filename, 'r') as csv_file:
        csv_reader = csv.DictReader(csv_file)
        columns = csv_reader.fieldnames

        for row in csv_reader:
            values = [f"'{row[col]}'" if isinstance(row[col], str) else str(row[col]) for col in columns]
            sql_insert = f"INSERT INTO {table_name} ({', '.join(columns)}) VALUES ({', '.join(values)});"
            print(sql_insert)

# Replace these values with your actual CSV file and desired table name
csv_filename = 'data.csv'
table_name = 'your_table'

csv_to_sql_insert(csv_filename, table_name)

매우 빠른 Export/Import 마법사를 위한 나의 제안은 Excel에 MySQL을 사용하는 것입니다.

때문에 를 여러분이 해결해야 하는 모든 오류와 수정을 해결할 필요가 없습니다.LOAD DATA INFILE

언급URL : https://stackoverflow.com/questions/33296569/mysql-workbench-table-data-import-wizard-extremely-slow

반응형