MySQL使用技巧

MySQL将数据转成json数组

 JSON_OBJECT:生成JSON
JSON_ARRAYAGG:生成JSON数组
    SELECT  JSON_ARRAYAGG(  JSON_OBJECT('GRPID',GRPID,'DATA_TYPE',DATA_TYPE,'MATNR',MATNR,'GERNR',GERNR,'QH_MATNR',QH_MATNR,'QH_GERNR',QH_GERNR,'QH_GERNR',QH_GERNR
        ,'ZTYPE',ZTYPE,'YLZD1',YLZD1,'YLZD2',YLZD2,'YLZD3',YLZD3))
     
FROM info_sap_barcode ;

 

MySQL AES加密:

AES_ENCRYPT:加密
TO_BASE64:加密之后,转成字符串,否则乱码
   select  TO_BASE64(  AES_ENCRYPT(t1.jsonStr,'APS0123456789123') )as aa from (
        select  JSON_OBJECT('startTime', startTime, 'endTime', endTime, 'username', username, 'password', `password`) as jsonStr
        FROM    (        
            SELECT 1688007478000 AS startTime,1688007488000 AS endTime,'CHAMAPS' AS username,123456 AS `password`
        ) AS T
)as t1 ;

如果数据量很大,可以使用导入CSV的方式,配合MySqlBulkLoader类,但是 MySQL 会将CSV中导入表的数据赋默认值,比如 int类型字段,如CSV中是空字符串,导入数据库默认为0.此时需要在CSV中,将空字符串替换为NULL,导入数据库才会转成NULL,如下图

 public static string ToCsvStr(this DataTable dt)
        {
            //以半角逗号(即,)作分隔符,列为空也要表达其存在。
            //列内容如存在半角逗号(即,)则用半角引号(即"")将该字段值包含起来。
            //列内容如存在半角引号(即")则应替换成半角双引号("")转义,并用半角引号(即"")将该字段值包含起来。
            StringBuilder sb = new StringBuilder();
            DataColumn colum;
            foreach (DataRow row in dt.Rows)
            {
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    colum = dt.Columns[i];
                    if (i != 0) sb.Append(",");
                    if (colum.DataType == typeof(string) && row[colum].ToString().Contains(","))
                    {
                        sb.Append("\"" + row[colum].ToString().Replace("\r\n", "").Replace("\"", "\"\"") + "\"");
                    }
                    else if (clsCommon.NullToString(row[colum]) == "")
                    {
                       //MySQL为了节省空间,空字符串导入到数据库时候,数值类型默认为0,需要手动写成NULL,插入数据库 才是 NULL 
                        sb.Append("NULL");
                    }
                    else sb.Append(row[colum].ToString().Replace("\r\n", ""));
                }
                sb.AppendLine();
            }

            return sb.ToString();
        }

  

 在设计数据库的时候,都要设置主键(推荐自增ID),创建时间,创建人!

在设计数据库的时候,都要确定数据的处理方式,增量还是全量!

关于MySQL的版本:

  1.   如客户没有要求版本,则选择最新稳定版本,不要选太老的版本
  2. 字符集选择,尽量选择utf8mb4

 

posted @ 2023-08-09 18:27  专注写BUG  阅读(10)  评论(0)    收藏  举报