Écrire une requête SQL sans la coder
Cet outil traduit une demande en langage naturel en requête SQL. Vous décrivez la donnée voulue — « les commandes de plus de 100 € du mois dernier » — et vous recevez le SELECT correspondant, jointures et conditions comprises. Indiquez le schéma de vos tables pour des colonnes exactes. La fonction est en bêta.
Exécuter en ligne
Exécutez cette tâche sur nos serveurs, avec votre compte. Les outils gratuits tournent dans votre navigateur ; celui-ci est facturé sur votre solde KIT au prix affiché ci-dessus.
Décrire plutôt que syntaxier
L’intérêt n’est pas d’éviter d’apprendre SQL, mais d’aller vite quand la structure de la requête est évidente et que seule l’écriture prend du temps. Vous formulez le besoin en une phrase, l’outil propose le SELECT, les jointures et les regroupements. Pour un GROUP BY avec plusieurs conditions ou une jointure sur trois tables, cela évite la friction du premier jet et vous laisse concentrer votre attention sur la vérification.
Donnez-lui votre schéma
Sans connaître vos tables, l’outil devine des noms de colonnes plausibles, rarement les vôtres. En lui fournissant la liste des tables et de leurs colonnes, vous obtenez une requête directement exécutable sur votre base. C’est la différence entre un exemple pédagogique et une requête que vous copiez sans la réécrire : quelques lignes de schéma changent tout le résultat, et vous font gagner l’essentiel des retouches.
Bêta : à relire avant d’exécuter
Cette capacité est en bêta, et une requête générée n’est jamais une vérité à exécuter les yeux fermés. Relisez toujours avant de lancer, surtout s’il y a un UPDATE ou un DELETE : une condition mal comprise peut toucher plus de lignes que prévu. Testez d’abord sur un jeu de données de préproduction. L’outil vous fait gagner la frappe, il ne vous décharge pas de la responsabilité du résultat.
Du dialecte au dialecte
SQL n’est pas tout à fait le même selon le moteur : la pagination, les fonctions de date ou la concaténation diffèrent entre PostgreSQL, MySQL et SQLite. Précisez votre moteur cible et la requête emploiera la syntaxe adaptée, plutôt qu’un SQL générique qui échouerait à l’exécution sur des points de détail agaçants. Un même besoin donne ainsi une formulation correcte pour votre base précise, pas une approximation.
Cas d’usage
Un chiffre sans déranger un dev
Élodie, cheffe de projet chez Studio Lumen SAS, a besoin du total des commandes par région. Elle décrit sa demande, ajoute le schéma des deux tables concernées et obtient la requête à passer au tableau de bord.
Point de départ d’une requête complexe
Julien doit croiser clients, factures et paiements. Il part de la version générée, vérifie les jointures, puis l’affine à la main : le squelette lui a épargné le plus fastidieux.
Apprendre en lisant
Un développeur junior comprend enfin la logique d’une sous-requête corrélée en voyant, côte à côte, sa phrase en français et le SQL produit.
Questions fréquentes
Faut-il lui donner la structure de mes tables ?
Ce n’est pas obligatoire, mais fortement conseillé. Sans le nom réel de vos tables et colonnes, l’outil devine, et la requête devra être adaptée. Avec le schéma, elle est le plus souvent exécutable telle quelle.
Quels moteurs SQL sont pris en charge ?
Les dialectes les plus répandus, dont PostgreSQL, MySQL, SQLite et SQL Server. Indiquez votre moteur pour que la syntaxe des dates, de la pagination et des fonctions spécifiques soit correcte.
Puis-je exécuter directement la requête produite ?
Relisez-la d’abord. La fonction est en bêta ; une requête peut être imparfaite, surtout pour un UPDATE ou un DELETE. Testez sur un environnement de préproduction avant toute exécution sur des données réelles.
L’outil se connecte-t-il à ma base de données ?
Non, jamais. Il ne reçoit que le texte de votre demande et, si vous le fournissez, la description de votre schéma. Aucune connexion à votre base, aucune donnée réelle n’est lue.
Qu’implique le statut « bêta » ?
Que la fonction s’exécute déjà, mais que sa qualité peut varier selon la complexité de la demande. Vos retours aident à l’améliorer ; en attendant, la relecture reste indispensable.
Combien ça coûte ?
$0.003 par appel, plus $0.0135 par requête produite, en dollars US. Tarif affiché, sans abonnement. Vous ne payez que les requêtes que vous générez.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/dev/text-to-sql \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/dev/text-to-sql", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/text-to-sql",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/text-to-sql", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/text-to-sql", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"input": "…"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.text_to_sql",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
422 | task_failed | La tâche a échoué : elle ne vous est pas facturée. |