浏览代码

ob-sql: Add dbport and dbpassword options to postgresql

* lisp/ob-sql.el (org-babel-sql-dbstring-postgresql): Add port
  parameter.
(org-babel-execute:sql): Handle password and port in `postgresql' SQL
engine.

TINYCHANGE.
Jakob Lombacher 9 年之前
父节点
当前提交
c257e31d10
共有 1 个文件被更改,包括 14 次插入10 次删除
  1. 14 10
      lisp/ob-sql.el

+ 14 - 10
lisp/ob-sql.el

@@ -90,12 +90,13 @@
 	       (when password (concat "-p" password))
 	       (when password (concat "-p" password))
 	       (when database (concat "-D" database))))))
 	       (when database (concat "-D" database))))))
 
 
-(defun org-babel-sql-dbstring-postgresql (host user database)
+(defun org-babel-sql-dbstring-postgresql (host port user database)
   "Make PostgreSQL command line args for database connection.
   "Make PostgreSQL command line args for database connection.
 Pass nil to omit that arg."
 Pass nil to omit that arg."
   (combine-and-quote-strings
   (combine-and-quote-strings
    (delq nil
    (delq nil
 	 (list (when host (concat "-h" host))
 	 (list (when host (concat "-h" host))
+	       (when port (format "-p%d" port))
 	       (when user (concat "-U" user))
 	       (when user (concat "-U" user))
 	       (when database (concat "-d" database))))))
 	       (when database (concat "-d" database))))))
 
 
@@ -152,13 +153,13 @@ This function is called by `org-babel-execute-src-block'."
 				      (org-babel-process-file-name in-file)
 				      (org-babel-process-file-name in-file)
 				      (org-babel-process-file-name out-file)))
 				      (org-babel-process-file-name out-file)))
 		    (`mssql (format "sqlcmd %s -s \"\t\" %s -i %s -o %s"
 		    (`mssql (format "sqlcmd %s -s \"\t\" %s -i %s -o %s"
-				     (or cmdline "")
-				     (org-babel-sql-dbstring-mssql
-				      dbhost dbuser dbpassword database)
-				     (org-babel-sql-convert-standard-filename
-				      (org-babel-process-file-name in-file))
-				     (org-babel-sql-convert-standard-filename
-				      (org-babel-process-file-name out-file))))
+				    (or cmdline "")
+				    (org-babel-sql-dbstring-mssql
+				     dbhost dbuser dbpassword database)
+				    (org-babel-sql-convert-standard-filename
+				     (org-babel-process-file-name in-file))
+				    (org-babel-sql-convert-standard-filename
+				     (org-babel-process-file-name out-file))))
                     (`mysql (format "mysql %s %s %s < %s > %s"
                     (`mysql (format "mysql %s %s %s < %s > %s"
 				    (org-babel-sql-dbstring-mysql
 				    (org-babel-sql-dbstring-mysql
 				     dbhost dbport dbuser dbpassword database)
 				     dbhost dbport dbuser dbpassword database)
@@ -167,11 +168,14 @@ This function is called by `org-babel-execute-src-block'."
 				    (org-babel-process-file-name in-file)
 				    (org-babel-process-file-name in-file)
 				    (org-babel-process-file-name out-file)))
 				    (org-babel-process-file-name out-file)))
 		    (`postgresql (format
 		    (`postgresql (format
-				  "psql --set=\"ON_ERROR_STOP=1\" %s -A -P \
+				  "%spsql --set=\"ON_ERROR_STOP=1\" %s -A -P \
 footer=off -F \"\t\"  %s -f %s -o %s %s"
 footer=off -F \"\t\"  %s -f %s -o %s %s"
+				  (if dbpassword
+				      (format "PGPASSWORD=%s " dbpassword)
+				    "")
 				  (if colnames-p "" "-t")
 				  (if colnames-p "" "-t")
 				  (org-babel-sql-dbstring-postgresql
 				  (org-babel-sql-dbstring-postgresql
-				   dbhost dbuser database)
+				   dbhost dbport dbuser database)
 				  (org-babel-process-file-name in-file)
 				  (org-babel-process-file-name in-file)
 				  (org-babel-process-file-name out-file)
 				  (org-babel-process-file-name out-file)
 				  (or cmdline "")))
 				  (or cmdline "")))