Le traitement par lots est une manière non interactive d'exécuter des programmes MySQL, et vous utiliserez toujours les mêmes commandes que dans MySQL. Le traitement par lots est une manière non interactive d'exécuter des programmes MySQL, et vous utiliserez toujours les mêmes commandes que dans MySQL.
Afin d'implémenter le traitement par lots, vous redirigez un fichier vers le programme mysql. Nous avons d'abord besoin d'un fichier texte. Ce fichier texte contient le même texte que la commande que nous avons entrée dans mysql.
Par exemple, si nous voulons insérer des données, utilisez un fichier contenant le texte suivant (le nom du fichier est New_Data.sql, bien sûr nous pouvons aussi le nommer New_Data.txt ou tout autre nom légal, et il n'est pas nécessaire qu'il se termine avec le suffixe sql) :
UTILISER Meet_A_Geek ;
INSERT INTO Clients (Customer_ID, Last_Name) VALUES(NULL, "Block");
INSERT INTO Clients (Customer_ID, Last_Name) VALUES(NULL, "Newton");
INSERT INTO Clients (Customer_ID, Last_Name) VALUES(NULL, "Simmons");
Notez que les phrases ci-dessus doivent être grammaticalement correctes et que chaque phrase doit se terminer par un point-virgule. La commande USE ci-dessus sélectionne la base de données et la commande INSERT insère des données.
Ensuite, nous devons importer le fichier ci-dessus dans la base de données. Avant l'importation, nous devons confirmer que la base de données est déjà en cours d'exécution, c'est-à-dire que le processus mysqld (ou service, appelé "service" sous Windows NT, "processus" sous Unix) est activé. déjà en marche.
Exécutez ensuite la commande suivante :
bin/mysql –p < /home/mark/New_Data.sql
Entrez ensuite le mot de passe comme demandé. S'il n'y a aucune erreur dans les instructions du fichier ci-dessus, les données seront importées dans la base de données.
Utilisez LOAD DATA INFILE sur la ligne de commande pour importer des données d'un fichier dans la base de données :
Maintenant, vous vous demandez peut-être : « Pourquoi diable est-ce que je tape toutes ces instructions SQL dans un fichier et que je les exécute ensuite via un programme ?
Cela peut sembler beaucoup de travail. Eh bien, vous avez probablement raison lorsque vous le pensez. Mais que se passe-t-il si vous disposez des enregistrements de journaux de toutes ces commandes ? C'est génial, eh bien, la plupart des bases de données génèrent automatiquement un journal des événements enregistrés dans la base de données. La plupart des journaux contiennent des commandes SQL originales qui ont été utilisées. Par conséquent, si vous ne pouvez pas exporter les données de votre base de données actuelle vers une nouvelle base de données MySQL, vous pouvez utiliser les fonctionnalités de journalisation et de traitement par lots de MySQL pour importer rapidement et facilement vos données. Bien sûr, cela vous évite d’avoir à taper.
CHARGEMENT DU FICHIER DE DONNÉES
C'est la dernière méthode que nous présenterons pour importer des données dans une base de données MySQL. Cette commande est très similaire à mysqlimport, mais cette méthode peut être utilisée sur la ligne de commande mysql. Cela signifie que vous pouvez utiliser cette commande dans tous les programmes utilisant l'API. Grâce à cette méthode, vous pouvez importer les données que vous souhaitez importer dans votre application.
Avant d'utiliser cette commande, le processus (service) mysqld doit être en cours d'exécution.
Démarrez la ligne de commande mysql :
bin/mysql –p
Entrez le mot de passe lorsque vous y êtes invité. Après avoir entré avec succès la ligne de commande mysql, entrez la commande suivante :
UTILISER Meet_A_Geek ;
CHARGER LE FICHIER DE DONNÉES "/home/mark/data.sql" DANS LES ORDRES DE TABLE ;
En termes simples, cela importera le contenu du fichier data.sql dans la table Orders. Comme l'outil mysqlimport, cette commande possède également des paramètres facultatifs. Par exemple, si vous devez importer des données de votre propre ordinateur vers un serveur de base de données distant, vous pouvez utiliser la commande suivante :
CHARGER LES DONNÉES LOCAL INFILE "C:MyDocsSQL.txt" DANS LES TABLES Commandes ;
Le paramètre LOCAL ci-dessus indique que le fichier est un fichier local et que le serveur est le serveur auquel vous êtes connecté. Cela élimine le besoin d'utiliser FTP pour télécharger des fichiers sur le serveur, MySQL le fait pour vous.
Vous pouvez également définir la priorité de l'instruction d'insertion. Si vous souhaitez la marquer comme faible priorité (LOW_PRIORITY), alors MySQL attendra que personne d'autre ne lise la table avant d'insérer des données. Vous pouvez utiliser les commandes suivantes :
LOAD DATA LOW_PRIORITY INFILE "/home/mark/data.sql" INTO TABLE Commandes ;
Vous pouvez également spécifier s'il convient de remplacer ou d'ignorer les valeurs de clé en double dans les fichiers et les tables lors de l'insertion de données. Syntaxe de remplacement des valeurs de clé en double :
LOAD DATA LOW_PRIORITY INFILE "/home/mark/data.sql" REPLACE INTO TABLE Commandes ;
La phrase ci-dessus peut sembler un peu maladroite, mais elle place les mots-clés dans un endroit que votre profileur peut comprendre.
La paire d'options suivante décrit le format d'enregistrement du fichier. Ces options sont également disponibles dans l'outil mysqlimport. Ils ont l'air un peu différents ici. Tout d'abord, le mot-clé FIELDS doit être utilisé. Si ce mot-clé est utilisé, le profileur MySQL espère voir au moins une des options suivantes :
TERMINÉ PAR le personnage
FERMÉ PAR caractère
ÉCHAPPÉ PAR le personnage
Ces mots-clés et leurs paramètres sont utilisés de la même manière que dans mysqlimport.
TERMINATED BY décrit le caractère séparateur du champ, qui est le caractère de tabulation (t) par défaut.
ENCLOSED BY décrit les caractères entre crochets du champ. Par exemple, placez chaque champ entre guillemets.
Caractère d'échappement décrit par ESCAPED BY. La valeur par défaut est une barre oblique inverse : ).
Ce qui suit utilise toujours l'exemple de commande mysqlimport précédent et utilise l'instruction LOAD DATA INFILE pour importer le même fichier dans la base de données :
CHARGER LE FICHIER DE DONNÉES "/home/mark/Orders.txt" REMPLACER DANS LA TABLE CHAMPS DE COMMANDES TERMINÉS PAR ',' ENCOURUS PAR '"' ;
Il existe une fonctionnalité dans l'instruction LOAD DATA INFILE qui n'est pas disponible dans l'outil mysqlimport :
LOAD DATA INFILE peut importer des fichiers dans la base de données par colonnes spécifiées.
Cette fonctionnalité est très importante lorsque l’on souhaite importer une partie des données. Par exemple, lorsque nous passons d'une base de données Access à une base de données MySQL, nous devons ajouter quelques colonnes (colonnes/champs/champs) à la base de données MySQL pour répondre à certains besoins supplémentaires.
À l'heure actuelle, les données de notre base de données Access sont toujours disponibles, mais comme les champs de ces données ne correspondent plus à ceux de MySQL, l'outil mysqlimport ne peut plus être utilisé. Néanmoins, nous pouvons toujours utiliser LOAD DATA INFILE. L'exemple suivant montre comment importer des données dans un champ spécifié :
CHARGER LE FICHIER DE DONNÉES "/home/Order.txt" DANS LA TABLE Commandes (Order_Number, Order_Date, Customer_ID) ;
Comme vous pouvez le constater, nous pouvons préciser les champs obligatoires. Ces champs spécifiés sont toujours entre parenthèses et séparés par des virgules. Si vous en manquez, MySQL vous le rappellera.