Come posso verificare la sintassi SQL in un file .sql?Come posso verificare la sintassi SQL in un file .sql?
risposta
È possibile incollarlo in un browser di query come MySQL Query Browser (parte del pacchetto Strumenti della GUI) e verificare visivamente come le parole chiave e le stringhe siano colorate per vedere più facilmente se sono stati commessi errori di sintassi.
basta eseguirlo ....
iniziare la transazione
eseguirlo
rollback
runing darà la risposta, ma c'è qualcosa che mostra errori di sintassi in quel file .... – maxjackie
puoi avere una sintassi valida e avere ancora errori di runtime –
Impossibile eseguire il rollback se le tabelle sono MyISAM, o se script esegue istruzioni implicite di commit (ad esempio DDL) o se lo script contiene istruzioni COMMIT. –
Ci sono alcuni prodotti senza/try-ware là fuori che ti permetterà connettersi a un database MySQL o semplicemente incollare lo script per convalidarlo. Google è tuo amico qui. Mimer will check ANSI-Standard syntax validation ma probabilmente non gestisce alcuna specifica MySQL.
Ci sono un paio di possibilità. Se si utilizzano tabelle InnoDB che supportano le transazioni, è possibile eseguire semplicemente un start transaction;
all'inizio del file .sql e un rollback;
alla fine. MySQL emetterà errori di sintassi.
Se si testiing UPDATE
o DELETE
dichiarazioni, si potrebbe aggiungere LIMIT 0
fino alla fine per evitare che queste query di apportare modifiche al database, ed ancora fare controllare la sintassi MySQL.
Lo script può contenere istruzioni che causano comunque un commit implicito. –
È vero, questo fa alcune supposizioni sul contenuto del file .sql. –
Il lexer di base sembra essere implementato in sql/sql_lex.cc. Potresti usare/salvare questo per costruire il tuo parser di test. Ma questo controllerebbe solo la sintassi ma non tutti gli errori di runtime.
Questo tipo di soluzione programmatica sarebbe molto utile per, ad esempio, convalidare che un risultato mysqldump sia almeno sintatticamente completo. – ClearCrescendo
TLDR:
>awk '{print "EXPLAIN " $0}' statements.sql | mysql --force -u user -p database | grep "ERROR"
Stranamente, mysql non dispone di un interruttore incorporato per questo, ma è possibile controllare la sintassi aggiungendo l'istruzione EXPLAIN
davanti le tue domande
Se si dispone di un file statements.sql
con ogni affermazione su una riga, anteporre EXPLAIN
di fronte a tutte le linee con:
>awk '{print "EXPLAIN " $0}' statements.sql > check.sql
È quindi possibile eseguire le istruzioni con lo strumento mysql
della riga di comando e utilizzare --force
per continua con errori. Stamperà un errore per qualsiasi affermazione con sintassi errata.
>mysql --force -u user -p database < check.sql
O Per visualizzare solo le linee con errori:
>mysql --force -u user -p database < check.sql | grep "ERROR"
Si può fare tutto questo su una linea senza creare un file intermedio:
>awk '{print "EXPLAIN " $0}' statements.sql | mysql --force -u user -p database | grep "ERROR"
Vorrei aggiungere questo per rendere così il file non deve essere una singola riga. 'awk '{if (sub (/; $ /,"; \ n ")) printf" EXPLAIN% s ", $ 0; else print $ 0} 'statements.sql' Combina linee che terminano in punto e virgola. – Jon49
- 1. Come includere un file sql nel file sql? MS SQL
- 2. Come posso verificare se esiste un vincolo di SQL Server?
- 3. sql injection sintassi booleana
- 4. Sintassi SQL più join?
- 5. Riferimento sintassi Spark SQL
- 6. SQL Server sottoquery sintassi
- 7. sintassi per nolock in SQL
- 8. Come posso verificare se esiste una colonna in SQL Server?
- 9. Sintassi dell'istruzione SQL Insert
- 10. SQL Server: inserire la sintassi dell'istruzione INTO
- 11. Sintassi SQL per LEFT OUTER JOIN in SQL Server 2012
- 12. Come posso convalidare la sintassi della query SQL nel database Oracle?
- 13. Esistono validatori SQL in grado di verificare la sintassi su più server di database?
- 14. Esiste un componente Swing con sintassi SQL?
- 15. Come posso verificare se esiste una directory utilizzando SQL Server?
- 16. Come utilizzare SQL in un file CSV
- 17. SQL Server - Sintassi errata vicino)
- 18. SQL LIKE condition per verificare la presenza di un intero?
- 19. Errore di sintassi sql creazione trigger
- 20. SQL Server: cosa significa 1 ++ 2? sintassi T-SQL di
- 21. Come eseguire la query SQL in CodeIgniter
- 22. Verificare se è in esecuzione un server SQL collegato
- 23. Come importare un file .sql o .csv in SQLite?
- 24. Oracle: trova la posizione di un errore in SQL dinamico utilizzando SQL o PL/SQL
- 25. come posso verificare se esiste un file?
- 26. Come posso verificare se un risultato SQL contiene un carattere di nuova riga?
- 27. Come verificare l'esistenza di un oggetto SQL Server e rilasciarlo?
- 28. Come posso verificare se esiste una vista in un database?
- 29. Come posso evitare la sovrapposizione di date in SQL?
- 30. Come posso forzare la lunghezza varchar in LINQ to SQL
Questo bisogno di un sacco di chiarimento essere utile (e rimanere aperto). Stai chiedendo suggerimenti per ispezionare visivamente il tuo SQL?Stai cercando uno script che ti aiuti a controllare la sintassi? Stai eseguendo lo script e hai bisogno di aiuto per capire un particolare errore? –
Penso che vogliano verificare che il file abbia una sintassi mySql valida. –
controlla visivamente anche il file SQL o lo script per verificare la sintassi – maxjackie