WeihanLi / DbTool.Packages

DbTool packages source code
MIT License
6 stars 2 forks source link

Oracle DbProvider #7

Open WeihanLi opened 2 years ago

WeihanLi commented 2 years ago

Related to https://github.com/WeihanLi/DbTool/issues/30

DbDriver: https://www.nuget.org/packages/Oracle.ManagedDataAccess.Core/

Oracle database in docker: https://github.com/oracle/docker-images/blob/main/OracleDatabase/SingleInstance/README.md#running-oracle-database-21c18c-express-edition-in-a-container

docker run -d --name oracle-db-server -p 1521:1521 -p 8080:8080 -e ORACLE_PWD=Test1234 container-registry.oracle.com/database/express:21.3.0-xe
# https://github.com/MaksymBilenko/docker-oracle-12c 
docker run -d -p 8080:8080 -p 1521:1521 --name oracle quay.io/maksymbilenko/oracle-12c

Oracle data types mapping: https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/oracle-data-type-mappings

查询数据库表脚本:

select t.table_name, t.comments from user_col_comments t order by t.table_name
SELECT 
     --t1.Table_Name || chr(13) || t3.comments       AS "表名称及说明",
       t1.Column_Name                                AS "字段名称",
       t1.DATA_TYPE                                  AS "数据类型",
       t1.DATA_LENGTH                                AS "长度",
       t1.NullAble                                   AS "是否为空",
       t2.Comments                                   AS "字段说明",
       t1.Data_Default                               AS "默认值"
       --t4.created                                  AS "建表时间"
       --t3.comments                                 AS "表说明",
  FROM cols t1
  LEFT JOIN user_col_comments t2 
         ON t1.Table_name = t2.Table_name
        AND t1.Column_Name = t2.Column_Name
  LEFT JOIN user_tab_comments t3 
         ON t1.Table_name = t3.Table_name
  LEFT JOIN user_objects t4 
         ON t1.table_name = t4.OBJECT_NAME
  WHERE NOT EXISTS (SELECT t4.Object_Name
          FROM User_objects t4
         WHERE t4.Object_Type = 'TABLE'
           AND t4.Temporary = 'Y'
           AND t4.Object_Name = t1.Table_Name)
               --and t1.TABLE_NAME='你要查询的表名'
  ORDER BY t1.Table_Name, t1.Column_ID
WeihanLi commented 1 year ago

oracle docker 连不上,没办法测试 😢