Maison  >  Article  >  base de données  >  Résumé des questions fréquemment posées sur l'importation de données Excel dans MySQL : Comment résoudre le problème de l'insertion de lots volumineux lors de l'importation de données ?

Résumé des questions fréquemment posées sur l'importation de données Excel dans MySQL : Comment résoudre le problème de l'insertion de lots volumineux lors de l'importation de données ?

WBOY
WBOYoriginal
2023-09-08 11:07:481222parcourir

Résumé des questions fréquemment posées sur limportation de données Excel dans MySQL : Comment résoudre le problème de linsertion de lots volumineux lors de limportation de données ?

Résumé des questions fréquemment posées sur l'importation de données Excel dans Mysql : Comment résoudre le problème de l'insertion de lots volumineux lors de l'importation de données ?

L'importation de données Excel vers MySQL est l'une des tâches souvent rencontrées dans le développement quotidien. Pour importer une petite quantité de données, vous pouvez utiliser des outils clients de base de données ou des lignes de commande pour effectuer des opérations d'insertion. Mais face à de gros lots d'importation de données, une simple opération d'insertion entraînera sans aucun doute de sérieux problèmes de performances. Cet article décrira comment résoudre ce problème et donnera des exemples de code correspondants.

Description du problème :
En utilisation réelle, lorsque de gros lots de données du tableau Excel doivent être importés dans la base de données MySQL, l'efficacité de l'insertion unique est trop faible, ce qui entraîne une opération d'importation très lente. Cela fait non seulement perdre beaucoup de temps, mais peut également entraîner des problèmes tels qu'un délai de connexion à la base de données ou un débordement de mémoire.

Solution :
Afin d'améliorer l'efficacité de l'importation, nous pouvons utiliser l'insertion par lots pour insérer plusieurs enregistrements dans la base de données en même temps. MySQL propose une variété de méthodes pour atteindre cet objectif. Trois méthodes couramment utilisées seront présentées ci-dessous.

  1. Utilisez l'instruction INSERT INTO…VALUES
    L'insertion par lots est réalisée en construisant l'instruction INSERT INTO…VALUES. Les étapes spécifiques sont les suivantes :

① Lire le tableau Excel et stocker les données dans un tableau à deux dimensions ;
② Convertir le tableau à deux dimensions sous la forme de chaîne de la clause VALUES ;
③ Épisser l'instruction INSERT INTO ; et insérez la clause VALUES dans la base de données.

Exemple de code :

import xlrd
import pymysql

# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='password', database='database')
cursor = conn.cursor()

# 读取Excel表格数据
data = xlrd.open_workbook('data.xlsx')
table = data.sheet_by_name('Sheet1')
rows = table.nrows

# 构建values子句
values = []
for i in range(1, rows):
    values.append(tuple(table.row_values(i)))

# 批量插入
sql = "INSERT INTO table_name (column1, column2, column3) VALUES (%s, %s, %s)"
cursor.executemany(sql, values)
conn.commit()

# 关闭连接
cursor.close()
conn.close()
  1. Utilisation de l'instruction LOAD DATA INFILE
    MySQL fournit l'instruction LOAD DATA INFILE pour importer des données à partir de fichiers. En enregistrant les données sous forme de fichier CSV, puis en utilisant l'instruction LOAD DATA INFILE pour les importer immédiatement dans la base de données, l'efficacité de l'importation peut être considérablement améliorée.

Exemple de code :

LOAD DATA INFILE 'data.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '
'
IGNORE 1 LINES;
  1. Utilisation des outils d'insertion par lots
    En plus d'écrire manuellement du code pour implémenter l'insertion par lots, vous pouvez également utiliser certains outils pour automatiser le processus. Par exemple, vous pouvez utiliser la bibliothèque pandas de Python pour insérer directement les données du DataFrame dans la base de données MySQL en appelant la méthode to_sql.

Exemple de code :

import pandas as pd
from sqlalchemy import create_engine

# 连接数据库
engine = create_engine('mysql+pymysql://root:password@localhost/database')

# 读取Excel表格数据
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')

# 批量插入
df.to_sql('table_name', engine, if_exists='append', index=False)

# 关闭连接
engine.dispose()

Résumé :
Lors de l'importation de données Excel dans MySQL, l'utilisation d'une seule méthode d'insertion est inefficace et ne peut pas répondre aux besoins d'importation de gros lots de données. Grâce à l'insertion par lots ou à l'utilisation d'outils, l'efficacité de l'importation peut être considérablement améliorée et le temps d'importation peut être réduit. La méthode à utiliser dépend des besoins et des circonstances de chacun. J'espère que l'introduction et les exemples de cet article pourront aider les lecteurs à résoudre les problèmes d'insertion groupée rencontrés lors de l'importation de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn