====== MySQL ======
===== Général =====
==== Rechercher les doublons dans une table ====
SELECT DISTINCT *
FROM `table` t1
WHERE EXISTS (
SELECT *
FROM `table` t2
WHERE
t1.id <> t2.id
AND t1.champ1 = t2.champ1
)
ORDER BY t1.champ1
==== Rechercher des entrées qui ont plusieurs relations ====
SELECT
sub.IND_ID, sub.IND_NOM_USUEL, sub.IND_PRENOM_USUEL,
sub.CAT_ID
FROM (
SELECT
ind.IND_ID, ind.IND_NOM_USUEL, ind.IND_PRENOM_USUEL,
cat.CAT_ID
FROM
INDIVIDU ind
LEFT JOIN J_CAT_IND jci ON jci.IND_ID = ind.IND_ID
LEFT JOIN CATEGORIE_USAGER cat on cat.CAT_ID = jci.CAT_ID
WHERE
cat.CAT_ID IN ('i_etu', 'i_ens_vac', 'x_doc_cont', 'x_autres')
) AS sub
GROUP BY
sub.IND_ID
HAVING COUNT(*) >= 2
ORDER BY
sub.IND_NOM_USUEL ASC,
sub.IND_PRENOM_USUEL ASC
==== Manipuler un champ binaire ====
UPDATE TABLE
SET FIELD = FIELD - 8
WHERE FIELD & 8 = 8
==== Dump ====
=== Exclure des tables ===
mysqldump --ignore-table=schema.table1
=== Exclure les données de tables ===
mysqldump --no-data > db-structure.sql
mysqldump --no-create-info --ignore-table=schema.table1 > db-data.sql
cat db-structure.sql > db-all.sql && cat db-data.sql >> db-all.sql
=== Ne pas perturber la réactivité de la base ===
mysqldump --single-transaction --quick
=== Accélérer le dump ===
mysqldump --max_allowed_packet=512M
=== Supprimer les données d'une table dans un dump SQL ===
$ grep -n 'Table structure\|Dumping data for table' dump.sql
19:-- Table structure for table `t1`
37:-- Dumping data for table `t1`
47:-- Table structure for table `t2`
66:-- Dumping data for table `t2`
76:-- Table structure for table `t3`
96:-- Dumping data for table `t3`
Pour supprimer les données de la table t2 :
$ sed '66,75 d' dump.sql > cleandump.sql
==== Divers ====
=== Construire un fichier CSV avec les résultats d'une requête ===
$ mysql -u user -p db < req.txt | sed 's/\t/;/g' > out.csv