X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=create-sql.lisp;h=ec162b84c3c6ada4e50a491514b84b7686d5dfec;hb=5be6bdf06e0c99612a4c1a1d6f110e424400d96e;hp=f842eb21af84ca166f342766430180db7e7c01fc;hpb=fca7a50cb4e7574de861601d8aa0bcb9921f58de;p=umlisp.git diff --git a/create-sql.lisp b/create-sql.lisp index f842eb2..ec162b8 100644 --- a/create-sql.lisp +++ b/create-sql.lisp @@ -102,10 +102,21 @@ (defun create-index-cmd (colname tablename length) "Return sql create index command" - (format nil "CREATE INDEX ~a ON ~a (~a ~a)" + (format nil "CREATE INDEX ~a ON ~a (~a)" (concatenate 'string tablename "_" colname "_X") - tablename colname - (if (integerp length) (format nil "(~d)" length) ""))) + tablename + (case *umls-sql-type* + (:mysql + (concatenate 'string colname + (if (integerp length) + (format nil " (~d)" length) + ""))) + ((:postgresql :postgresql-socket) + (if (integerp length) + (format nil "substr(~A,1,~D)" colname length) + colname)) + (t + colname)))) (defun create-all-tables-cmdfile () "Return sql commands to create all tables. Not need for automated SQL import" @@ -145,7 +156,9 @@ (sql-execute (create-index-cmd (car idx) (cadr idx) (caddr idx)) conn))) (defun make-usrl (conn) - (sql-execute "drop table if exists USRL" conn) + (if (eql :mysql *umls-sql-type*) + (sql-execute "drop table if exists USRL" conn) + (ignore-errors (sql-execute "drop table USRL" conn))) (sql-execute "create table USRL (sab varchar(80), srl integer)" conn) (dolist (tuple (mutex-sql-query "select distinct SAB,SRL from MRSO order by SAB asc")) @@ -170,22 +183,32 @@ (sql-create-indexes conn +custom-index-cols+) (sql-create-special-tables conn))) -(defun create-umls-db (&optional (extension ".trans") - (copy-cmd #'mysql-copy-cmd)) +(defun create-umls-db (&optional (extension ".trans")) "SQL Databases: initializes entire database via SQL copy commands. This is much faster that using create-umls-db-insert." + (ignore-errors + (clsql:destroy-database (list *umls-sql-host* (lookup-db-name *umls-sql-db*) + *umls-sql-user* *umls-sql-passwd*) + :database-type *umls-sql-type*)) + (clsql:create-database (list *umls-sql-host* (lookup-db-name *umls-sql-db*) + *umls-sql-user* *umls-sql-passwd*) + :database-type *umls-sql-type*) (ensure-ucols+ufiles) (ensure-preparse) (translate-all-files extension) - (with-sql-connection (conn) - (sql-drop-tables conn) - (sql-create-tables conn) - (dolist (file *umls-files*) - (sql-execute (funcall copy-cmd file extension) conn)) - (sql-create-indexes conn) - (sql-create-custom-tables conn) - (sql-create-indexes conn +custom-index-cols+) - (sql-create-special-tables conn))) + (let ((copy-cmd + (ecase (umls-sql-type) + (:mysql #'mysql-copy-cmd) + (:postgresql #'pg-copy-cmd)))) + (with-sql-connection (conn) + (sql-drop-tables conn) + (sql-create-tables conn) + (dolist (file *umls-files*) + (sql-execute (funcall copy-cmd file extension) conn)) + (sql-create-indexes conn) + (sql-create-custom-tables conn) + (sql-create-indexes conn +custom-index-cols+) + (sql-create-special-tables conn)))) (defun translate-all-files (&optional (extension ".trans")) "Copy translated files and return postgresql copy commands to import"