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的版本:
- 如客户没有要求版本,则选择最新稳定版本,不要选太老的版本
- 字符集选择,尽量选择utf8mb4
浙公网安备 33010602011771号