相关疑难解决方法(0)

从PHP中加载.sql文件

我正在为我正在开发的应用程序创建一个安装脚本,需要在PHP中动态创建数据库.我已经有了它来创建数据库,但现在我需要加载几个.sql文件.我曾打算一次打开文件和mysql_query一行 - 直到我查看模式文件并意识到它们不是每行一个查询.

那么,我如何从PHP中加载一个sql文件(如phpMyAdmin的import命令)?

php mysql sql import scripting

65
推荐指数
9
解决办法
13万
查看次数

在PHP中运行MySQL*.sql文件

*.sql在创建新的网站数据库时使用了两个文件.第一个文件创建所有表.第二个文件填充一些默认记录.我想从PHP执行这些文件.我也使用Zend_Framework,如果这将有助于实现这一目标.

附加信息

  1. 我没有控制台访问权限
  2. 我正在尝试从我们的应用程序中自动生成网站.

使用shell_exec()......

$command = 'mysql'
        . ' --host=' . $vals['db_host']
        . ' --user=' . $vals['db_user']
        . ' --password=' . $vals['db_pass']
        . ' --database=' . $vals['db_name']
        . ' --execute="SOURCE ' . $script_path
;
$output1 = shell_exec($command . '/site_db.sql"');
$output2 = shell_exec($command . '/site_structure.sql"');
Run Code Online (Sandbox Code Playgroud)

...我从来没有得到有用的输出,但在另一个线程上遵循一些建议,最后让它全部工作.我切换到命令的格式,而不是执行文件.--option=value--execute="SOURCE ..."<

此外,我从来没有得到shell_exec()和和之间的差异的良好解释exec().

php mysql scripting zend-framework

46
推荐指数
6
解决办法
9万
查看次数

PHP:一个mysql_query语句中的多个SQL查询

所以我有一个需要使用mysql_query()加载的SQL转储文件.不幸的是,用它执行多个查询是不可能的.

- >不能假设安装了mysql命令行客户端(mysql --help) - 用于直接加载SQL文件

- >不能假设安装了mysqli扩展

/* contents of dump.sql, including comments */
DELETE FROM t3 WHERE body = 'some text; with semicolons; scattered; throughout';
DELETE FROM t2 WHERE name = 'hello';
DELETE FROM t1 WHERE id = 1;
Run Code Online (Sandbox Code Playgroud)

下面的explode()不起作用,因为某些转储内容的值包含分号.

$sql = explode(';', file_get_contents('dump.sql'));
foreach ($sql as $key => $val) {
    mysql_query($val);
}
Run Code Online (Sandbox Code Playgroud)

在不修改转储文件的情况下加载SQL的最佳方法是什么?

php mysql sql

9
推荐指数
2
解决办法
4万
查看次数

可以从 SQL 脚本中引用另一个 SQL 文件

基本上我想从 Postgres 中的 SQL 文件执行一个 SQL 文件。

mysql 的类似问题:是否可以从另一个 sql 脚本中的存储过程调用 sql 脚本?

为什么?

因为我在一个项目中有 2 个数据文件,我希望有一行可以被注释/取消注释以加载第二个文件。

说明: 我想从 A.SQL 调用 B.SQL

说明 2: 这是针对使用 hibernate 从初始 SQL 文件 (A.SQL) 创建数据库的 Spring 项目。

经过进一步思考,似乎我可能不得不从 java/string/hibernate 处理这个问题。

下面是配置文件:

spring.datasource.url=jdbc:postgresql://localhost:5432/dbname
spring.datasource.username=postgres
spring.datasource.password=root
spring.datasource.driver-class-name=org.postgresql.Driver

spring.datasource.data=classpath:db/migration/postgres/data.sql
spring.jpa.hibernate.ddl-auto=create
Run Code Online (Sandbox Code Playgroud)

postgresql spring hibernate jpa

9
推荐指数
2
解决办法
5099
查看次数

使用Python mysqldb模块无法使MySQL源查询工作

我有以下几行代码:

sql = "source C:\\My Dropbox\\workspace\\projects\\hosted_inv\\create_site_db.sql"
cursor.execute (sql)
Run Code Online (Sandbox Code Playgroud)

当我执行我的程序时,我收到以下错误:

错误1064:您的SQL语法中有错误; 查看与您的MySQL服务器版本对应的手册,以便在第1行'source C:\ My Dropbox\workspace\projects\hosted_inv\create_site_db.sql'附近使用正确的语法

现在我可以将以下内容复制并发送到mysql作为查询:

source C:\\My Dropbox\\workspace\\projects\\hosted_inv\\create_site_db.sql
Run Code Online (Sandbox Code Playgroud)

它完美无缺.当我检查查询日志以查找我的脚本执行的查询时,它显示我的查询如下:

source C:\\My Dropbox\\workspace\\projects\\hosted_inv\\create_site_db.sql
Run Code Online (Sandbox Code Playgroud)

但是,当我手动粘贴并执行时,整个create_site_db.sql在查询日志中展开,并显示该文件中的所有sql查询.

我在这里错过了mysqldb如何查询的内容吗?我遇到了限制吗?我的目标是运行一个sql脚本来创建模式结构,但我不想在shell进程中调用mysql来获取sql文件.

有什么想法吗?谢谢!

python mysql scripting

5
推荐指数
2
解决办法
3848
查看次数

标签 统计

mysql ×4

php ×3

scripting ×3

sql ×2

hibernate ×1

import ×1

jpa ×1

postgresql ×1

python ×1

spring ×1

zend-framework ×1