php - 执行命令在 sql server 中不起作用
问题描述
我正在研究数据库迁移。我编写了一个代码来执行从数据库中检索数据并推送到 csv 文件中的命令。这工作正常,MySQL
但是当我尝试做同样的事情时SQL Server
它不起作用。事实上,当我将相同的命令复制粘贴到命令提示符时,它工作正常。我仔细检查了一切。我不明白为什么它不起作用。它返回空白输出。我已经尝试过之前提供的许多解决方案。没有工作。对此的任何帮助将不胜感激。
这是我正在使用的代码:
//$sqlsrv is used to determine the database server type
$str_query = voc_get_query_string($query);
$output_uri = 'temporary://' . user_password();
$file_path = drupal_realpath($output_uri . '.csv');
if($sqlsrv){
$exec_path = drupal_realpath('private://Binn\sqlcmd');
}else{
$exec_path = drupal_realpath('private://mysql');
}
$sql_uri = 'temporary://' . user_password();
$sql_path = drupal_realpath($sql_uri);
$fp = fopen($sql_path, 'w');
fputs($fp, $str_query);
fclose($fp);
global $databases;
if ($sqlsrv) {
$cmd = ($exec_path .
' -S ' . $databases['default']['default']['host'] .
' -d ' . $databases['default']['default']['database'] .
' -U ' . $databases['default']['default']['username'] .
' -P ' . $databases['default']['default']['password'] .
' -i ' . $sql_path . '>>'. $file_path .
' -s '. '"," -W -m10 -r1');
}
else {
$cmd = ($exec_path . ' ' . $databases['default']['default']
['database'] .
' -h ' . $databases['default']['default']['host'] .
' -u ' . $databases['default']['default']['username'] .
' -p ' . $databases['default']['default']['password'] . ' < '
. $sql_path .
' > ' . $file_path);
}
exec($cmd);
watchdog('cmd', var_export($cmd, TRUE));
解决方案
推荐阅读
- php - 如何内爆 foreach 循环值?
- python - 从 JSON 文件中解码自定义 Python 类型
- php - 使用 mailgun 消息生成器向单个收件人发送批量电子邮件
- mysql - mySQL:返回父/子关系的剩余部分
- spring - 对 Zuul 的请求中的正文编码
- python - SQLAlchemy:sqlalchemy.exc.OperationalError VALUES (?, ?, ?, ?)
- mysql - 表情变成了???在 MySql 中
- python - 如何在python的直方图中为bin分配一个特定的值?
- python - 用于打印字典项目一次而不重复打印功能的 for 循环
- sql - 如何为这个问题编写 SQL QUERY