Mysql 在SQL转储文件上执行SQL查询的最简单方法是什么?
是否可以在不将.sql转储文件导入数据库的情况下对其执行查询 示例:stuff.sql:Mysql 在SQL转储文件上执行SQL查询的最简单方法是什么?,mysql,Mysql,是否可以在不将.sql转储文件导入数据库的情况下对其执行查询 示例:stuff.sql: CREATE TABLE IF NOT EXISTS `options` ( ... INSERT INTO `options` (`option_id`, `option_name`, `option_value`, `autoload`) VALUES (1, 'siteurl', 'http://www.someurl.com', 'yes'), ... 然后执行一些SELECT语句以获取选项数据
CREATE TABLE IF NOT EXISTS `options` (
...
INSERT INTO `options` (`option_id`, `option_name`, `option_value`, `autoload`) VALUES
(1, 'siteurl', 'http://www.someurl.com', 'yes'),
...
然后执行一些SELECT
语句以获取选项数据
当然,我可以在本地数据库中导入转储,执行我想要的,再次转储并再次删除该数据库,但是有没有一种开销更小的方法呢?您在找这个吗
Process p = null;
try {
Runtime runtime = Runtime.getRuntime();
p = runtime.exec("mysqldump -uroot -pdbpass --add-drop-database -B dbname -r " + "filepath" + "Filename" + ".sql");
//change the dbpass and dbname with your dbpass and dbname
int processComplete = p.waitFor();
if (processComplete == 0) {
System.out.println("Backup created successfully!");
} else {
lblMessage.setText("Could not create the backup");
}
} catch (Exception e) {
e.printStackTrace();
}
没有进口就不行,我不这么认为。不过,你还有其他选择。您可以将SQL转储导入一个临时的内存数据库,然后查询该数据库。例如,如果您的sql兼容,这可能是一个SQLite
:内存:
数据库,或者您可以使用MySQL“创建表
”DDL使用Engine=MEMORY
(或Engine=HEAP
)创建内存表,然后查询该数据库(您必须用转储文件中的内存替换Engine=INNODB或Engine=MyISAM才能导入它)
显然,这取决于您要查询的数据的大小。1TB的数据库可能无法导入到RAM中。只需将它们作为命令写入,而不使用
使用tbl_name;source some。sql
不可能!我以前搜索过这个,但没有找到任何解决方案,人们说这是不允许的,因为安全性您的意思是像这样mysql-u username-p-h localhost DATA-BASE-NAME
?