SQLite : import et export
Échanger des données avec des fichiers CSV, JSON ou SQL. Les exemples utilisent les tables clients et commandes.
Importer un fichier CSV
Section intitulée « Importer un fichier CSV »Fichier clients.csv (première ligne = noms de colonnes) :
nom,email,villeZoé Blanc,zoe@exemple.com,LilleHugo Noir,hugo@exemple.com,Nantes.mode csv.import clients.csv clients_import.mode tableSELECT * FROM clients_import;INSERT INTO clients (nom, email, ville) SELECT nom, email, ville FROM clients_import;DROP TABLE clients_import;- Quand la table de destination n’existe pas,
.importla crée à partir de la ligne d’en-tête (toutes les colonnes enTEXT). Ici, passer par une table temporaire (clients_import) permet de compléter ensuite les colonnes automatiques declients(id,cree_le). - Quand la table existe déjà, ajouter
--skip 1pour ignorer la ligne d’en-tête :.import --skip 1 donnees.csv ma_table. Les colonnes du fichier doivent alors correspondre à celles de la table (même nombre, même ordre).
Depuis la ligne de commande :
sqlite3 boutique.db -cmd ".mode csv" ".import clients.csv clients_import"Exporter en CSV
Section intitulée « Exporter en CSV ».headers on.mode csv.output commandes.csvSELECT * FROM commandes;.output stdoutEn une ligne :
sqlite3 -header -csv boutique.db "SELECT * FROM commandes;" > commandes.csvPour un séparateur différent : -separator ';'. Pour un tableur français, préférer le point-virgule.
Autres formats
Section intitulée « Autres formats »sqlite3 -json boutique.db "SELECT * FROM clients;" > clients.json # JSONsqlite3 -markdown -header boutique.db "SELECT * FROM clients;" # tableau Markdownsqlite3 -html -header boutique.db "SELECT * FROM clients;" # lignes HTMLExporter en SQL : .dump
Section intitulée « Exporter en SQL : .dump »sqlite3 boutique.db .dump > boutique.sql # structure et donnéessqlite3 boutique.db ".dump clients" > clients.sql # une tablesqlite3 boutique.db ".schema" > schema.sql # structure seulesqlite3 boutique.db .dump | gzip > boutique.sql.gzRestaurer depuis un fichier SQL
Section intitulée « Restaurer depuis un fichier SQL »sqlite3 nouvelle.db < boutique.sqlgunzip -c boutique.sql.gz | sqlite3 nouvelle.dbOu dans la console : .read boutique.sql.
Copier des données entre bases : ATTACH
Section intitulée « Copier des données entre bases : ATTACH »ATTACH DATABASE 'archive.db' AS archive;CREATE TABLE archive.commandes_2025 AS SELECT * FROM commandes WHERE passee_le < '2026-01-01';DELETE FROM commandes WHERE passee_le < '2026-01-01'; -- après vérification de la copieDETACH DATABASE archive;Convertir d’une autre base
Section intitulée « Convertir d’une autre base »# PostgreSQL ou MySQL vers CSV, puis vers SQLitepsql -d boutique -c "\copy clients TO 'clients.csv' WITH (FORMAT csv, HEADER true)"sqlite3 boutique.db -cmd ".mode csv" ".import clients.csv clients_import"Dépannage
Section intitulée « Dépannage »| Symptôme | Piste |
|---|---|
expected 3 columns but found 4 |
Le CSV ne correspond pas à la table : vérifier le séparateur et les colonnes |
| La première ligne est importée comme une donnée | Ajouter --skip 1 |
| Les accents sont abîmés | Fichier à convertir en UTF-8 (iconv -f ISO-8859-1 -t UTF-8) |
| Un champ avec une virgule est coupé | Entourer le champ de guillemets doubles dans le CSV |
UNIQUE constraint failed |
Doublon sur une colonne unique : nettoyer le fichier ou utiliser INSERT OR IGNORE |
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Manuel : Importing files as CSV