Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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
Mysql 在SQL转储文件上执行SQL查询的最简单方法是什么?_Mysql - Fatal编程技术网

Mysql 在SQL转储文件上执行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语句以获取选项数据

是否可以在不将.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
语句以获取选项数据


当然,我可以在本地数据库中导入转储,执行我想要的,再次转储并再次删除该数据库,但是有没有一种开销更小的方法呢?

您在找这个吗

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