1656534000
MySQL est un système de gestion de base de données relationnelle basé sur SQL - Structured Query Language, et la gestion des données dans MySQL n'est pas si difficile.
Dans ce guide détaillé, nous allons découvrir comment récupérer des données de la base de données MySQL en utilisant AJAX dans l'application Node js. Nous allons construire un élément déroulant HTML dans lequel nous obtiendrons les enregistrements de la base de données.
Nous allons installer certains packages à partir du registre NPM, et ces packages nous aideront à connecter Node à la base de données MySQL et à créer les routes API qui interagiront avec la base de données.
De plus, nous allons créer le script de nœud, qui nous aidera à exécuter le serveur de nœud.
Découvrons comment travailler avec la base de données MySQL via un environnement de nœud.
Tapez la commande mkdir suivie du nom de votre projet et appuyez sur Entrée pour créer un nouveau dossier.
mkdir node-vlog
Ensuite, déplacez-vous dans le dossier de l'application.
cd node-vlog
Utilisez la commande npm init, cette commande crée le fichier package.json , où les méta-informations de votre projet restent.
npm init
À la racine du projet, créez un fichier app.js , enregistrez le nom du fichier dans la section des scripts afin que ce script de nœud puisse être appelé à l'aide de l'outil de ligne de commande.
{
"main": "app.js",
}
Nous allons installer les packages ci-dessous à partir du registre npm, exécuter la commande et installer les modules simultanément.
npm install ejs express cors mysql body-parser nodemon
Dans votre base de données, vous devez avoir une table avec quelques enregistrements, afin que vous puissiez obtenir les données de la base de données.
Si vous n'avez pas créé de table, exécutez la commande sql donnée à partir de l'onglet sql.
CREATE DATABASE nodedb;
CREATE TABLE Country (
id int not null,
name varchar(150) not null);
INSERT INTO country VALUES(1,'Colombia');
INSERT INTO country VALUES(2,'Estonia');
INSERT INTO country VALUES(3,'Belgium');
INSERT INTO country VALUES(4,'Austria');
INSERT INTO country VALUES(5,'Denmark');</code></pre>
Dans votre projet de nœud, créez le fichier database.js , puis dans le code donné, ajoutez vos informations d'identification de base de données afin de connecter la base de données à l'application de nœud.
var mysql = require('mysql')
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'test'
})
connection.connect((err) => {
if (err) {
console.log(err)
return
}
console.log('Database connected')
})
module.exports = connection
Ouvrez le fichier de script app.js , dans ce fichier mettez le code donné.
var express = require('express')
var path = require('path')
var createError = require('http-errors')
var cors = require('cors')
var bodyParser = require('body-parser')
var app = express()
var dbMySQLNode = require('./database')
// view engine setup
app.set('views', path.join(__dirname, '/'))
app.set('view engine', 'ejs')
app.use(bodyParser.json())
app.use(
bodyParser.urlencoded({
extended: true,
}),
)
app.use(cors())
app.get('/', (req, res) => {
res.render('index')
})
app.get('/fetch-countries', function (req, res) {
dbMySQLNode.query('SELECT * FROM Country ORDER BY id desc', function (
error,
response,
) {
if (error) {
res.json({
msg: error,
})
} else {
res.json({
msg: 'Data successfully fetched',
country: response,
})
}
})
})
app.listen(5555, function () {
console.log('Node app is being served on port: 5555')
})
module.exports = app
Le script suivant est chargé de configurer le moteur de vue ejs, de définir le paramètre cors, de déclarer la route qui communiquera avec la base de données et de définir le port d'application.
A la racine de votre application, créez le fichier index.ejs , ce fichier gérera la vue de votre application node. Il affichera les enregistrements que vous obtenez de la base de données.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
rel="stylesheet"
/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<div class="container">
<h2 class="mb-4">Node js Ajax Get Data from MySQL Example</h2>
<div class="form-group">
<label><strong>Countries</strong></label>
<select class="form-control" id="dynamicDropdown"></select>
</div>
</div>
<script>
$(document).ready(function () {
function showCountryCollection() {
var count_id = this.value;
$("#dynamicDropdown").html("");
$.ajax({
url: "http://localhost:5555/fetch-countries",
type: "GET",
dataType: "json",
success: function (res) {
console.log(res);
$("#dynamicDropdown").html('<option value="">Select</option>');
$.each(res.Country, function (key, value) {
$("#dynamicDropdown").append(
'<option value="' + value.id + '">' + value.name + "</option>"
);
});
},
});
}
showCountryCollection();
});
</script>
</body>
</html>
En fin de compte, vous devez évoquer la commande suggérée pour démarrer l'application de nœud.
nodemon
Vous devez utiliser cette URL pour tester l'application :
http://localhost/:5555
Dans ce guide, nous avons examiné le processus d'obtention des résultats de la base de données MySQL dans l'application Node js.
Nous avons expliqué comment récupérer les données de la base de données MySQL et afficher les enregistrements dans la liste déroulante de sélection HTML dans une application Node js à l'aide des dépendances externes.
Nous espérons que vous avez aimé ce guide et que vous le partagez avec d'autres.
Source : https://www.positronx.io/node-ajax-retrieve-records-from-mysql-database-tutorial/
1595905879
HTML to Markdown
MySQL is the all-time number one open source database in the world, and a staple in RDBMS space. DigitalOcean is quickly building its reputation as the developers cloud by providing an affordable, flexible and easy to use cloud platform for developers to work with. MySQL on DigitalOcean is a natural fit, but what’s the best way to deploy your cloud database? In this post, we are going to compare the top two providers, DigitalOcean Managed Databases for MySQL vs. ScaleGrid MySQL hosting on DigitalOcean.
At a glance – TLDR
ScaleGrid Blog - At a glance overview - 1st pointCompare Throughput
ScaleGrid averages almost 40% higher throughput over DigitalOcean for MySQL, with up to 46% higher throughput in write-intensive workloads. Read now
ScaleGrid Blog - At a glance overview - 2nd pointCompare Latency
On average, ScaleGrid achieves almost 30% lower latency over DigitalOcean for the same deployment configurations. Read now
ScaleGrid Blog - At a glance overview - 3rd pointCompare Pricing
ScaleGrid provides 30% more storage on average vs. DigitalOcean for MySQL at the same affordable price. Read now
MySQL DigitalOcean Performance Benchmark
In this benchmark, we compare equivalent plan sizes between ScaleGrid MySQL on DigitalOcean and DigitalOcean Managed Databases for MySQL. We are going to use a common, popular plan size using the below configurations for this performance benchmark:
Comparison Overview
ScaleGridDigitalOceanInstance TypeMedium: 4 vCPUsMedium: 4 vCPUsMySQL Version8.0.208.0.20RAM8GB8GBSSD140GB115GBDeployment TypeStandaloneStandaloneRegionSF03SF03SupportIncludedBusiness-level support included with account sizes over $500/monthMonthly Price$120$120
As you can see above, ScaleGrid and DigitalOcean offer the same plan configurations across this plan size, apart from SSD where ScaleGrid provides over 20% more storage for the same price.
To ensure the most accurate results in our performance tests, we run the benchmark four times for each comparison to find the average performance across throughput and latency over read-intensive workloads, balanced workloads, and write-intensive workloads.
Throughput
In this benchmark, we measure MySQL throughput in terms of queries per second (QPS) to measure our query efficiency. To quickly summarize the results, we display read-intensive, write-intensive and balanced workload averages below for 150 threads for ScaleGrid vs. DigitalOcean MySQL:
ScaleGrid MySQL vs DigitalOcean Managed Databases - Throughput Performance Graph
For the common 150 thread comparison, ScaleGrid averages almost 40% higher throughput over DigitalOcean for MySQL, with up to 46% higher throughput in write-intensive workloads.
#cloud #database #developer #digital ocean #mysql #performance #scalegrid #95th percentile latency #balanced workloads #developers cloud #digitalocean droplet #digitalocean managed databases #digitalocean performance #digitalocean pricing #higher throughput #latency benchmark #lower latency #mysql benchmark setup #mysql client threads #mysql configuration #mysql digitalocean #mysql latency #mysql on digitalocean #mysql throughput #performance benchmark #queries per second #read-intensive #scalegrid mysql #scalegrid vs. digitalocean #throughput benchmark #write-intensive
1656534000
MySQL est un système de gestion de base de données relationnelle basé sur SQL - Structured Query Language, et la gestion des données dans MySQL n'est pas si difficile.
Dans ce guide détaillé, nous allons découvrir comment récupérer des données de la base de données MySQL en utilisant AJAX dans l'application Node js. Nous allons construire un élément déroulant HTML dans lequel nous obtiendrons les enregistrements de la base de données.
Nous allons installer certains packages à partir du registre NPM, et ces packages nous aideront à connecter Node à la base de données MySQL et à créer les routes API qui interagiront avec la base de données.
De plus, nous allons créer le script de nœud, qui nous aidera à exécuter le serveur de nœud.
Découvrons comment travailler avec la base de données MySQL via un environnement de nœud.
Tapez la commande mkdir suivie du nom de votre projet et appuyez sur Entrée pour créer un nouveau dossier.
mkdir node-vlog
Ensuite, déplacez-vous dans le dossier de l'application.
cd node-vlog
Utilisez la commande npm init, cette commande crée le fichier package.json , où les méta-informations de votre projet restent.
npm init
À la racine du projet, créez un fichier app.js , enregistrez le nom du fichier dans la section des scripts afin que ce script de nœud puisse être appelé à l'aide de l'outil de ligne de commande.
{
"main": "app.js",
}
Nous allons installer les packages ci-dessous à partir du registre npm, exécuter la commande et installer les modules simultanément.
npm install ejs express cors mysql body-parser nodemon
Dans votre base de données, vous devez avoir une table avec quelques enregistrements, afin que vous puissiez obtenir les données de la base de données.
Si vous n'avez pas créé de table, exécutez la commande sql donnée à partir de l'onglet sql.
CREATE DATABASE nodedb;
CREATE TABLE Country (
id int not null,
name varchar(150) not null);
INSERT INTO country VALUES(1,'Colombia');
INSERT INTO country VALUES(2,'Estonia');
INSERT INTO country VALUES(3,'Belgium');
INSERT INTO country VALUES(4,'Austria');
INSERT INTO country VALUES(5,'Denmark');</code></pre>
Dans votre projet de nœud, créez le fichier database.js , puis dans le code donné, ajoutez vos informations d'identification de base de données afin de connecter la base de données à l'application de nœud.
var mysql = require('mysql')
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'test'
})
connection.connect((err) => {
if (err) {
console.log(err)
return
}
console.log('Database connected')
})
module.exports = connection
Ouvrez le fichier de script app.js , dans ce fichier mettez le code donné.
var express = require('express')
var path = require('path')
var createError = require('http-errors')
var cors = require('cors')
var bodyParser = require('body-parser')
var app = express()
var dbMySQLNode = require('./database')
// view engine setup
app.set('views', path.join(__dirname, '/'))
app.set('view engine', 'ejs')
app.use(bodyParser.json())
app.use(
bodyParser.urlencoded({
extended: true,
}),
)
app.use(cors())
app.get('/', (req, res) => {
res.render('index')
})
app.get('/fetch-countries', function (req, res) {
dbMySQLNode.query('SELECT * FROM Country ORDER BY id desc', function (
error,
response,
) {
if (error) {
res.json({
msg: error,
})
} else {
res.json({
msg: 'Data successfully fetched',
country: response,
})
}
})
})
app.listen(5555, function () {
console.log('Node app is being served on port: 5555')
})
module.exports = app
Le script suivant est chargé de configurer le moteur de vue ejs, de définir le paramètre cors, de déclarer la route qui communiquera avec la base de données et de définir le port d'application.
A la racine de votre application, créez le fichier index.ejs , ce fichier gérera la vue de votre application node. Il affichera les enregistrements que vous obtenez de la base de données.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
rel="stylesheet"
/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<div class="container">
<h2 class="mb-4">Node js Ajax Get Data from MySQL Example</h2>
<div class="form-group">
<label><strong>Countries</strong></label>
<select class="form-control" id="dynamicDropdown"></select>
</div>
</div>
<script>
$(document).ready(function () {
function showCountryCollection() {
var count_id = this.value;
$("#dynamicDropdown").html("");
$.ajax({
url: "http://localhost:5555/fetch-countries",
type: "GET",
dataType: "json",
success: function (res) {
console.log(res);
$("#dynamicDropdown").html('<option value="">Select</option>');
$.each(res.Country, function (key, value) {
$("#dynamicDropdown").append(
'<option value="' + value.id + '">' + value.name + "</option>"
);
});
},
});
}
showCountryCollection();
});
</script>
</body>
</html>
En fin de compte, vous devez évoquer la commande suggérée pour démarrer l'application de nœud.
nodemon
Vous devez utiliser cette URL pour tester l'application :
http://localhost/:5555
Dans ce guide, nous avons examiné le processus d'obtention des résultats de la base de données MySQL dans l'application Node js.
Nous avons expliqué comment récupérer les données de la base de données MySQL et afficher les enregistrements dans la liste déroulante de sélection HTML dans une application Node js à l'aide des dépendances externes.
Nous espérons que vous avez aimé ce guide et que vous le partagez avec d'autres.
Source : https://www.positronx.io/node-ajax-retrieve-records-from-mysql-database-tutorial/
1655995200
Dans ce tutoriel, vous découvrirez comment importer un fichier CSV dans la base de données MySQL à l'aide de Node js et du package Fast CSV.
Le téléchargement de fichiers vers des bases de données est facilité par le package Multer. Multer est un package npm populaire qui permet de télécharger des fichiers de manière moins atroce.
Il est conçu pour node js, un middleware puissant qui gère les données multipart/form et est principalement utilisé pour télécharger des fichiers.
Nous combinerons multer avec le module Fast-csv pour importer des fichiers dans la base de données MySQL.
Fast CSV est un package pratique qui analyse et formate les fichiers CSV ou tout autre fichier de valeurs délimitées dans l'environnement node js.
Il existe également d'autres modules que nous utiliserons dans ce guide; ces packages nous aideront à créer la fonctionnalité d'importation de fichiers csv dans Node js.
Accédez à l'invite de commande de votre terminal et exécutez la commande donnée pour rendre le dossier vide pour le projet de nœud.
mkdir node-csv
Entrez dans le dossier vide :
cd node-csv
Tapez la commande suggérée, puis exécutez la commande donnée pour générer le nouveau fichier package.json .
npm init
Maintenant, le script de nœud a été créé, il doit être enregistré dans la section des scripts comme indiqué, assurez-vous d'ajouter le nom du script dans le fichier package.json .
{
"main": "app.js",
}
Install NPM Modules
De plus, nous devons taper la commande donnée sur le terminal et appuyer sur Entrée pour installer les modules donnés.
npm install fast-csv express mysql multer nodemon body-parser
Il est facile de créer une nouvelle table pour stocker les enregistrements de fichiers CSV, vous pouvez créer la table de données MySQL à l'aide de la commande SQL donnée.
CREATE TABLE `users` (
`id` bigint(11) NOT NULL,
`name` varchar(150) DEFAULT NULL,
`email` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE= InnoDB DEFAULT CHARSET=utf8
Créons un fichier index.html , ce fichier gérera la vue de la fonctionnalité.
Nous devons ajouter le lien Bootstrap 5 dans la section head, cela nous permettra de créer un composant d'interface utilisateur de téléchargement de fichiers.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Node CSV File Upload</title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
rel="stylesheet"
/>
</head>
<body>
<h2 class="mb-3">Node Import CSV File to MySQL database Example</h2>
<form action="/import-csv" method="post" enctype="multipart/form-data">
<div class="mb-3">
<input
type="file"
class="form-control"
name="import-csv"
accept="csv"
/>
</div>
<div class="d-grid">
<input type="submit" class="btn btn-dark" value="Store File" />
</div>
</form>
</body>
</html>
Ouvrez le fichier app.js , dans ce fichier vous devez placer le code donné ligne par ligne.
Dans ce fichier, nous établissons la connexion de la base de données à MySQL, créons les routes qui géreront le téléchargement du fichier csv vers la base de données et configurons le port d'application du nœud.
const express = require('express')
const bodyparser = require('body-parser')
const fs = require('fs');
const path = require('path')
const mysql = require('mysql')
const multer = require('multer')
const csv = require('fast-csv');
const app = express()
app.use(express.static("./public"))
app.use(bodyparser.json())
app.use(bodyparser.urlencoded({
extended: true
}))
// Database connection
const db = mysql.createConnection({
host: "localhost",
user: "root",
password: "",
database: "test"
})
db.connect(function (err) {
if (err) {
return console.error(err.message);
}
console.log('Connected to database.');
})
var storage = multer.diskStorage({
destination: (req, file, callBack) => {
callBack(null, './uploads/')
},
filename: (req, file, callBack) => {
callBack(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))
}
})
var upload = multer({
storage: storage
});
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
app.post('/import-csv', upload.single("import-csv"), (req, res) =>{
uploadCsv(__dirname + '/uploads/' + req.file.filename);
console.log('File has imported :' + err);
});
function uploadCsv(uriFile){
let stream = fs.createReadStream(uriFile);
let csvDataColl = [];
let fileStream = csv
.parse()
.on("data", function (data) {
csvDataColl.push(data);
})
.on("end", function () {
csvDataColl.shift();
db.connect((error) => {
if (error) {
console.error(error);
} else {
let query = 'INSERT INTO users (id, name, email) VALUES ?';
db.query(query, [csvDataColl], (error, res) => {
console.log(error || res);
});
}
});
fs.unlinkSync(uriFile)
});
stream.pipe(fileStream);
}
const PORT = process.env.PORT || 5555
app.listen(PORT, () => console.log(`Node app serving on port: ${PORT}
Voici la commande qui démarrera l'application de nœud, le module nodemon redémarrera votre serveur de nœud même si vous apportez des modifications mineures aux fichiers de l'application de nœud.
nodemon
Vous pouvez taper l'URL donnée sur le navigateur pour tester l'application.
http://localhost:5555
Node js est un excellent framework, et il permet aux développeurs de créer toutes les fonctionnalités qu'ils souhaitent pour leurs applications Web.
Merci à la communauté npm, qui fournit presque tous les types de modules nécessaires pour créer les fonctionnalités souhaitées.
Dans ce didacticiel, nous avons appris à télécharger un fichier CSV dans une base de données MySQL à l'aide de Fast CSV, Multer, MySQL et, plus important encore, d'express js.
Source : https://www.positronx.io/node-import-csv-file-data-to-mysql-database-with-html-form/
1657964248
Un CSV est un fichier de valeurs séparées par des virgules, utile pour stocker des données dans un format tabulaire. CSV est largement utilisé avec les tableurs, l'extension .csv est une justification du fichier CSV.
Il offre un moyen éloquent de transférer des informations entre diverses applications et est largement utilisé avec Microsoft Excel ou Google Spreadsheets.
Tout au long de ce guide détaillé, nous vous apprendrons comment importer des données de fichiers CSV dans la base de données MySQL dans l'application Codeigniter 4 depuis le début.
Les données sont partout ; il est fort possible que la plupart du temps, vous souhaitiez importer des données de fichier Excel ou de fichier CSV dans la base de données MySQL dans Codeigniter ; si vous savez comment c'est fait, ça va, mais si vous ne savez pas comment construire cette fonctionnalité, cela devient une douleur intense.
Par conséquent, nous allons vous expliquer comment importer dynamiquement des données d'un fichier Excel vers MySQL dans CodeIgniter. Nous partagerons des instructions spécifiques qui vous aideront à étancher votre soif de créer une fonctionnalité simple pour importer un fichier CSV dans la base de données MySQL Codeigniter.
Lancez la première étape de création de l'application Web Codeigniter, et il existe deux façons simples.
Vous pouvez télécharger via l'interface de ligne de commande et exécuter la commande ci-dessous, mais assurez-vous que Composer est configuré sur votre machine.
composer create-project codeigniter4/appstarter
Ou, vous pouvez télécharger directement l'application Codeigniter directement depuis leur site officiel.
Après avoir téléchargé l'application, décompressez le projet et renommez-le.
Ensuite, défini display_errors
sur 1 dans app/Config/Boot/production.php , cela rend le processus de gestion des erreurs profondément facile.
ini_set('display_errors', '1');
Nous avons fourni une requête SQL ci-dessous ; Je n'ai pas besoin de vous dire ce qu'il fait, n'est-ce pas ? Alors, ouvrez la console de requête SQL dans PHPMyAdmin, entrez cette requête ; après avoir exécuté cette requête avec succès, vous ajouterez une nouvelle table dans la base de données MySQL.
CREATE TABLE students (
id int(11) NOT NULL AUTO_INCREMENT COMMENT 'Primary Key',
name varchar(150) NOT NULL COMMENT 'Name',
email varchar(255) NOT NULL COMMENT 'Email',
phone varchar(250) NOT NULL COMMENT 'Phone',
created_at varchar(20) NOT NULL COMMENT 'Date Created',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Student table' AUTO_INCREMENT=1;
Pour stocker les données du fichier CSV dans la base de données, ouvrez app/Config/Database.php , puis ajoutez les détails de la base de données comme le nom de la base de données, le nom d'utilisateur et le mot de passe.
public $default = [
'DSN' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'codeigniter_db',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => false,
'DBDebug' => (ENVIRONMENT !== 'development'),
'cacheOn' => false,
'cacheDir' => '',
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'encrypt' => false,
'compress' => false,
'strictOn' => false,
'failover' => [],
'port' => 3306,
];
Vous pouvez ou non voir "Impossible de se connecter à la base de données : erreur Codeigniter" . Ne vous inquiétez pas; nous allons régler cela pour vous. Ajoutez l'une des valeurs dans le nom d'hôte en fonction de votre serveur local (MAMP ou XAMP).
# MAMP
public $default = [
'hostname' => '/Applications/MAMP/tmp/mysql/mysql.sock',
]
# XAMP
public $default = [
'hostname' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock',
]
Ne vous inquiétez pas. Si vous n'avez pas de fichier CSV, vous pouvez copier le code suivant séparé par des virgules, le coller dans l'éditeur de code et enregistrer le fichier avec l' extension .csv .
name, email, phone, created_at
Sam Coury, christine1998@yahoo.com, 772-267-3636, 2021-02-02
Chris Ellis, ellis@yahoo.com, 270-562-2304, 2020-03-03
Cameron Finley, cameron@rediff.com, 813-416-4979, 2019-01-05
Howard Schlueter, schlueter@gmail.com, 828-207-1592, 2018-05-02
Jordan Tafoya, annabell2001@hotmail.com, 512-596-3622, 2017-05-11
L'idée du modèle tourne autour de la tenue du prototype du schéma de la table de la base de données, créez par conséquent StudentModel.php dans le dossier app/Models.
Mettez à jour le fichier app/Models/StudentModel.php .
<?php
namespace App\Models;
use CodeIgniter\Database\ConnectionInterface;
use CodeIgniter\Model;
class StudentModel extends Model
{
protected $table = 'students';
protected $allowedFields = [
'name',
'email',
'phone',
'created_at'
];
}
Maintenant, dans cette section, nous devons créer et configurer un fichier de contrôleur, donc créer StudentController.php dans le dossier app/Controllers. Ce fichier contient la classe unique, qui devient le lieu de diverses fonctions, qui effectue différentes tâches sous un même toit.
Mettez à jour le fichier app/Controllers/StudentController.php .
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
use CodeIgniter\HTTP\RequestInterface;
use App\Models\StudentModel;
class StudentController extends Controller
{
public function index()
{
return view('index');
}
public function importCsvToDb()
{
$input = $this->validate([
'file' => 'uploaded[file]|max_size[file,2048]|ext_in[file,csv],'
]);
if (!$input) {
$data['validation'] = $this->validator;
return view('index', $data);
}else{
if($file = $this->request->getFile('file')) {
if ($file->isValid() && ! $file->hasMoved()) {
$newName = $file->getRandomName();
$file->move('../public/csvfile', $newName);
$file = fopen("../public/csvfile/".$newName,"r");
$i = 0;
$numberOfFields = 4;
$csvArr = array();
while (($filedata = fgetcsv($file, 1000, ",")) !== FALSE) {
$num = count($filedata);
if($i > 0 && $num == $numberOfFields){
$csvArr[$i]['name'] = $filedata[0];
$csvArr[$i]['email'] = $filedata[1];
$csvArr[$i]['phone'] = $filedata[2];
$csvArr[$i]['created_at'] = $filedata[3];
}
$i++;
}
fclose($file);
$count = 0;
foreach($csvArr as $userdata){
$students = new StudentModel();
$findRecord = $students->where('email', $userdata['email'])->countAllResults();
if($findRecord == 0){
if($students->insert($userdata)){
$count++;
}
}
}
session()->setFlashdata('message', $count.' rows successfully added.');
session()->setFlashdata('alert-class', 'alert-success');
}
else{
session()->setFlashdata('message', 'CSV file coud not be imported.');
session()->setFlashdata('alert-class', 'alert-danger');
}
}else{
session()->setFlashdata('message', 'CSV file coud not be imported.');
session()->setFlashdata('alert-class', 'alert-danger');
}
}
return redirect()->route('/');
}
}
Après avoir téléchargé les magasins de fichiers CSV dans le répertoire local du projet Codeigniter, n'oubliez donc pas de créer le csvfile
dossier dans le répertoire public.
La classe de contrôleur est prête, et maintenant nous devons exécuter les fonctions que nous avons définies dans la classe de contrôleur, entrer dans le fichier Routes et créer la méthode get et post en utilisant $routes, get charge le modèle de vue. En revanche, la publication invoque la demande de stockage des données du fichier CSV dans la base de données.
Mettez à jour le fichier app/Config/Routes.php .
$routes->get('/', 'StudentController::index');
$routes->post('import-csv', 'StudentController::importCsvToDb');
Dans cette section, nous travaillerons avec le fichier de vue ; ce fichier affichera les données du fichier CSV d'importation dans le composant de base de données MySQL, créez donc index.php dans le dossier app/Views.
Nous devons concevoir le formulaire à l'aide de Bootstrap 5, créer un formulaire de téléchargement de fichier Codeigniter, lier le formulaire à l'itinéraire de publication et informer l'utilisateur de la progression du téléchargement de fichier à l'aide de la boîte d'alerte Bootstrap 5.
Mettez à jour le fichier app/Views/index.php .
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Laravel Import Excel CSV to MySQL</title>
<meta name="description" content="The tiny framework with powerful features">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet">
<style>
.container {
max-width: 500px;
}
</style>
</head>
<body>
<div class="container mt-5">
<div class="card">
<div class="card-header text-center">
<strong>Upload CSV File</strong>
</div>
<div class="card-body">
<div class="mt-2">
<?php if (session()->has('message')){ ?>
<div class="alert <?=session()->getFlashdata('alert-class') ?>">
<?=session()->getFlashdata('message') ?>
</div>
<?php } ?>
<?php $validation = \Config\Services::validation(); ?>
</div>
<form action="<?=site_url('import-csv') ?>" method="post" enctype="multipart/form-data">
<div class="form-group mb-3">
<div class="mb-3">
<input type="file" name="file" class="form-control" id="file">
</div>
</div>
<div class="d-grid">
<input type="submit" name="submit" value="Upload" class="btn btn-dark" />
</div>
</form>
</div>
</div>
</div>
</body>
</html>
L'idée de cette dernière section est de tester la fonctionnalité que nous avons construite.
Ainsi, nous devons passer par quelques étapes, comme démarrer le serveur Codeigniter, copier l'URL donnée, la coller dans le navigateur et afficher l'application.
php spark serve
http://localhost:8080
Alors, c'était ça; jusqu'à présent, nous avons décrit chaque information pour vous aider à créer une fonctionnalité simple, importer un fichier Excel CSV dans la base de données MySQL dans Codeigniter.
Nous avons fait de notre mieux et n'avons rien négligé, et vous pouvez assimiler ce guide profond; à partir de maintenant, vous pourrez répliquer efficacement cette fonctionnalité dans vos projets CodeIgniter.
Travailler avec des données est la principale exigence ; nous ne savons pas dans quel format ni dans quel format nous recevons les données, c'est notre travail de placer les données dans la base de données de manière pragmatique, et c'est exactement ce que nous avons fait dans cet exemple d'importation de données de fichier CSV Codeigniter 4 vers la base de données MySQL.
Source : https://www.positronx.io/codeigniter-import-csv-file-data-to-mysql-database-tutorial/
1595781840
MySQL does not limit the number of slaves that you can connect to the master server in a replication topology. However, as the number of slaves increases, they will have a toll on the master resources because the binary logs will need to be served to different slaves working at different speeds. If the data churn on the master is high, the serving of binary logs alone could saturate the network interface of the master.
A classic solution for this problem is to deploy a binlog server – an intermediate proxy server that sits between the master and its slaves. The binlog server is set up as a slave to the master, and in turn, acts as a master to the original set of slaves. It receives binary log events from the master, does not apply these events, but serves them to all the other slaves. This way, the load on the master is tremendously reduced, and at the same time, the binlog server serves the binlogs more efficiently to slaves since it does not have to do any other database server processing.
Ripple is an open source binlog server developed by Pavel Ivanov. A blog post from Percona, titled MySQL Ripple: The First Impression of a MySQL Binlog Server, gives a very good introduction to deploying and using Ripple. I had an opportunity to explore Ripple in some more detail and wanted to share my observations through this post.
Ripple supports only GTID mode, and not file and position-based replication. If your master is running in non-GTID mode, you will get this error from Ripple:
Failed to read packet: Got error reading packet from server: The replication sender thread cannot start in AUTO_POSITION mode: this server has GTID_MODE = OFF instead of ON.
You can specify Server_id and UUID for the ripple server using the cmd line options: -ripple_server_id and -ripple_server_uuid
Both are optional parameters, and if not specified, Ripple will use the default server_id=112211 and uuid will be auto generated.
While connecting to the master, you can specify the replication user and password using the command line options:
-ripple_master_user and -ripple_master_password
You can use the command line options -ripple_server_ports and -ripple_server_address to specify the connection end points for the Ripple server. Ensure to specify the network accessible hostname or IP address of your Ripple server as the -rippple_server_address. Otherwise, by default, Ripple will bind to localhost and hence you will not be able to connect to it remotely.
You can use the CHANGE MASTER TO command to connect your slaves to replicate from the Ripple server.
To ensure that Ripple can authenticate the password that you use to connect to it, you need to start Ripple by specifying the option -ripple_server_password_hash
For example, if you start the ripple server with the command:
rippled -ripple_datadir=./binlog_server -ripple_master_address= <master ip> -ripple_master_port=3306 -ripple_master_user=repl -ripple_master_password='password' -ripple_server_ports=15000 -ripple_server_address='172.31.23.201' -ripple_server_password_hash='EF8C75CB6E99A0732D2DE207DAEF65D555BDFB8E'
you can use the following CHANGE MASTER TO command to connect from the slave:
CHANGE MASTER TO master_host='172.31.23.201', master_port=15000, master_password=’XpKWeZRNH5#satCI’, master_user=’rep’
Note that the password hash specified for the Ripple server corresponds to the text password used in the CHANGE MASTER TO command. Currently, Ripple does not authenticate based on the usernames and accepts any non-empty username as long as the password matches.
Exploring MySQL Binlog Server - Ripple
It’s possible to monitor and manage the Ripple server using the MySQL protocol from any standard MySQL client. There are a limited set of commands that are supported which you can see directly in the source code on the mysql-ripple GitHub page.
Some of the useful commands are:
SELECT @@global.gtid_executed;
– To see the GTID SET of the Ripple server based on its downloaded binary logs.STOP SLAVE;
– To disconnect the Ripple server from the master.START SLAVE;
– To connect the Ripple server to the master.#cloud #database #developer #high availability #mysql #performance #binary logs #gtid replication #mysql binlog #mysql protocol #mysql ripple #mysql server #parallel threads #proxy server #replication topology #ripple server