Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过MySQL上的单个查询截断数据库中的所有表?_Java_Mysql - Fatal编程技术网

Java 如何通过MySQL上的单个查询截断数据库中的所有表?

Java 如何通过MySQL上的单个查询截断数据库中的所有表?,java,mysql,Java,Mysql,我有一个Java应用程序,可以向MySQL服务器发送SQL查询。 我需要能够截断指定数据库中的所有表。到目前为止,我可以通过select语句检索所需的查询,但我找不到一种方法在一条SQL语句中执行它。我无法事先知道模式,因为它会根据用户的不同而不断变化。 我已经搜索了StackOverflow,但没有符合我的问题的解决方案,或者它们不起作用 不是通过MYSQL API,而是通过SQL。我知道也有类似的问题,但它们不能工作或使用存储过程。我需要与MYSQL兼容的纯SQL。 这是我到目前为止使用的S

我有一个
Java
应用程序,可以向
MySQL
服务器发送
SQL
查询。 我需要能够截断指定数据库中的所有表。到目前为止,我可以通过select语句检索所需的查询,但我找不到一种方法在一条
SQL
语句中执行它。我无法事先知道模式,因为它会根据用户的不同而不断变化。 我已经搜索了StackOverflow,但没有符合我的问题的解决方案,或者它们不起作用

不是通过MYSQL API,而是通过SQL。我知道也有类似的问题,但它们不能工作或使用存储过程。我需要与MYSQL兼容的纯SQL。

这是我到目前为止使用的
SQL
脚本:

SELECT CONCAT(
         'SET FOREIGN_KEY_CHECKS=0; ',
         GROUP_CONCAT(dropTableSql SEPARATOR '; '), '; ',
         'SET FOREIGN_KEY_CHECKS=1;'
       ) as dropAllTablesSql
FROM   ( SELECT  Concat('TRUNCATE TABLE ', table_schema, '.', TABLE_NAME) AS dropTableSql
         FROM    INFORMATION_SCHEMA.TABLES
         WHERE   table_schema = 'testschema' ) as queries

@P.Salmon可能重复感谢您阅读本文,但他们以不同的方式解决了问题,这不符合我的特殊需要。您不能使用一条sql语句执行多个表的截断,因为每个truncate table语句都是单独的。因此,您的要求可能并不完全符合现实。@P.Salmon链接的问题中描述的解决方案尽可能接近于一个单一的陈述。真的很难理解为什么这些对你不起作用。truncate的语法是truncate[TABLE]tbl_name-没有能力在一个语句中截断多个表@Shadow谢谢你的回复,但我只能在一个语句中完成。我在看是否有可能执行SELECT语句的结果。如果你说这不可能,我得想办法弄明白。