MySQL中Sql Server数据库项目的对应方法
在本文中,我们将介绍如何在MySQL中创建与Sql Server数据库项目相当的项目。
阅读更多:MySQL 教程
创建MySQL数据库
- 在MySQL中新建一个数据库。
CREATE DATABASE mydb;
- 创建存储过程(SP)和函数(UDF)使用的Schema。
CREATE SCHEMA my_sp_udf;
创建表
- 在MySQL中,CREATE TABLE创建一张表。
- DataType的语法是Sql Server相似的。
CREATE TABLE User(
UserId INT NOT NULL,
UserName VARCHAR(50) NOT NULL,
UserPwd VARCHAR(50) NOT NULL,
InsertTime DATETIME NOT NULL DEFAULT NOW(),
PRIMARY KEY (UserId)
);
- 也可以使用CREATE TABLE AS SELECT。
CREATE TABLE UserCopied AS SELECT * FROM User WHERE 1=2;
导入数据
- 使用LOAD DATA LOCAL INFILE可以将文件的内容加载到一张表中。
LOAD DATA LOCAL INFILE '~/user.txt' INTO TABLE User FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (UserId, UserName, UserPwd, InsertTime);
视图
- 创建视图的语法很仿Sql Server。
CREATE VIEW UserView AS SELECT UserName FROM User;
存储过程(SP)
- 在MySQL中,可以使用DELIMITER来定义分割符。
DELIMITER //
CREATE PROCEDURE my_sp_udf.GetUser(IN userInput VARCHAR(50), OUT userCount INT)
BEGIN
SELECT COUNT(*) INTO userCount FROM User WHERE UserName = userInput;
END //
DELIMITER ;
- 需要在调用时初始化参数。
SET @resultCount = 0;
CALL my_sp_udf.GetUser('test', @resultCount);
SELECT @resultCount;
函数(UDF)
- 通过创建Scala脚本,并使用sbt将其转换为扩展库,可以调用Scala集合函数,并使用MySQL的通用列表函数。
- 下面的Scala代码定义了一个fn_concat函数,它接受Array[String]和分隔符作为参数,并将数组的内容连接在一起。将src/fn_concat.scala复制到服务器上。
package com.mydocs.my_sp_udf
import org.apache.spark.sql.api.java.UDF1
class FnConcat extends UDF1[Seq[String], String] {
def call(words: Seq[String]): String = {
words.fold("")((a, b) => a + "," + b).substring(1)
}}
object FnConcat {
def register(sparkSession: SparkSession, name: String): Unit = {
sparkSession.udf.register(name, new FnConcat())
}
}
- 之后,您可以在MySql中使用此功能。
CREATE FUNCTION my_sp_udf.fn_concat RETURNS String
SONAME 'libscalalib.so'
LANGUAGE C
OPTIONS (NAME 'fn_concat', LIBRARY 'scalalib.so');
触发器
- 在MySQL中,使用CREATE TRIGGER.
CREATE TRIGGER before_user_delete BEFORE DELETE ON User FOR EACH ROW
BEGIN
INSERT INTO User_audit SELECT NOW(), 'DELETE', OLD.Name;
END;
总结
在本文中,我们介绍了MySQL中与Sql Server数据库项目相当的项。这将帮助您在转换和维护项目时更容易迁移。希望这篇文章对您有所帮助,感谢您的阅读!
极客教程