MatrixOrigin MatrixOrigin Docs
Product docs
MatrixOne Current product MatrixOne Intelligence
About Get Started Develop Tutorial Deploy Operations Migrate Test Performance Security Reference Troubleshooting FAQs Release Notes Glossary Contribute
/
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
MatrixOne Docs
MatrixOne Docs
  • Home
  • Overview
    • MatrixOne Feature List
    • MatrixOne Feature
      • Git for Data
      • Multi-Account
      • Scalability
      • Cost-Effective
      • High Availability
      • Timing
      • Streams
      • User-defined functions
      • MySQL Compatibility
      • Feature Overview
    • MatrixOne Architecture Design
      • Transactional Analytical Engine Architecture
      • Detailed Logservice Architecture
      • Logtail Protocol Architecture
      • Transaction and Lock Mechanisms Architecture
      • Detailed Proxy Architecture
      • WAL Technology Explained
      • Detailed Caching and Hot-Cold Data Separation Architecture
      • Detailed Stream Engine Architecture
      • MatrixOne-Operator design and implementation
    • MatrixOne vs. other databases
      • MatrixOne vs. common OLTP databases
    • What's New
    • Getting Started
      • Deploy on macOS
        • Using binary package
        • Using Docker
      • Deploy on Linux
        • Using binary package
        • Using Docker
      • Basic SQL
    • Developing Guide
      • Java connect to MatrixOne
        • Connect MatrixOne with Java ORMs
      • Python connect to MatrixOne
      • C# connect to MatrixOne
      • Connecting to MatrixOne with Golang
      • MatrixOne SSL connection
      • Connecting to MatrixOne with TypeScript
      • Schema Design
        • Create Database
        • Create Table
        • Replication table
        • Create View
        • Create Temporary Table
        • Create Secondary Index
        • Vector
        • Data Integrity
          • NOT NULL Constraints
          • UNIQUE KEY Constraints
          • PRIMARY KEY Constraints
          • FOREIGN KEY Constraints
          • AUTO INCREMENT Constraints
      • Write Data
        • Bulk Load
          • Load csv format data
          • Load jsonlines format data
          • Load data from S3
          • Load data by using the `source`
        • Update Data
        • Delete Data
        • Prepared
      • Export Data
        • Export data by MODUMP
      • Read Data
        • Multi-table Join Queries
        • Subquery
        • Views
        • Common Table Expression
        • Window Function
          • Time Window
      • Data de-duplication
        • BITMAP
      • Account Design
        • Publish-Subscribe
      • Transactions
        • Transaction by MatrixOne Server
          • Explicit Transaction
          • Implicit Transaction
          • Pessimistic Transaction
          • Optimistic Transaction
          • Isolation Level
          • MVCC
          • User Guide
            • Scenario
          • Scenario
      • User-defined function
        • UDF python advanced
      • Vector
        • Vector Search
        • IVF Rank Options
        • Cluster Centers
      • Ecological Tools
        • Visualizing MatrixOne Reports with Yonghong BI
        • Visual Monitoring of MatrixOne with Superset
        • ETL Tools
          • Writing Data from MySQL to MatrixOne
          • Writing Data from Oracle to MatrixOne
          • Using DataX to write data to MatrixOne
            • Writing Data from MySQL to MatrixOne
            • Writing Data from Oracle to MatrixOne
            • Writing Data from PostgreSQL to MatrixOne
            • Writing Data from SQL Server to MatrixOne
            • Writing Data from MongoDB to MatrixOne
            • Writing Data from TiDB to MatrixOne
            • Writing Data from ClickHouse to MatrixOne
            • Writing Data from Doris to MatrixOne
            • Writing Data from InfluxDB to MatrixOne
            • Writing Data from Elasticsearch to MatrixOne
        • Computing Engine
          • Writing Data from MySQL to MatrixOne
          • Writing Data from Hive to MatrixOne
          • Writing Data from Doris to MatrixOne
          • Using Flink to Write Real-Time Data to MatrixOne
            • Writing Data from MySQL to MatrixOne
            • Writing Data from Oracle to MatrixOne
            • Writing Data from SQL Server to MatrixOne
            • Writing Data from PostgreSQL to MatrixOne
            • Writing Data from MongoDB to MatrixOne
            • Writing Data from TiDB to MatrixOne
            • Writing Data from Kafka to MatrixOne
        • Scheduling Tools
      • Develop Overview
      • AI Agent Tools
        • Query MatrixOne Documentation with AI Agent
    • Tutorial
      • SpringBoot and JPA CRUD demo
      • SpringBoot and MyBatis CRUD demo
      • PyMySQL CRUD demo
      • SQLAlchemy CRUD demo
      • Django CRUD demo
      • Golang CRUD demo
      • Gorm CRUD demo
      • C# CRUD demo
      • TypeScript Basic Example
      • HTAP Application demo
      • RAG Application demo
      • Safe Production Upgrade with Instant Rollback
      • Instant Clone for Multi-Team Development
      • Pinecone-Compatible Vector Search
      • IVF Index Health Monitoring
      • HNSW Vector Index
      • Hybrid Search (Vector + Fulltext + SQL)
      • Fulltext Natural Search
      • Fulltext Boolean Search
      • Fulltext JSON Search
      • Picture(Text)-to-Picture Search Application demo
      • Dify Platform Integration Guide for MatrixOne
      • Prerequisites
      • Steps
      • Git4Data Demo
    • Deploying
      • Plan MatrixOne Cluster Topology
        • Experience Environment Deployment Plan
        • Minimum Production Environment Deployment Plan
        • Recommended Production Environment Deployment Plan
      • Cluster Deployment Guide
        • Deployed Kubernetes and object storage environment
      • Cluster Operations Management
        • Updating
        • Health check and resource monitoring
        • Scaling
        • Managing CN Groups with Proxy
        • Import data from local Minio to MatrixOne
        • Operator Management
      • Deploy Matrixone Cluster
    • Maintenance
      • Backup and Recovery Concepts
      • Backup and Restore by using mo-dump
      • mo_br Backup and Recovery
        • Principle overview
        • Example
        • mo_br snapshot backup recovery
        • mo_br pitr
      • MatrixOne active/standby disaster recovery
      • cdc
        • From MatrixOne to MySQL
        • From MatrixOne to MatrixOne
      • Mount Data
    • Migrating
      • Migrate data from MySQL to MatrixOne
      • Migrate data from SQL Server to MatrixOne
      • Migrate data from SQL Server to MatrixOne
      • Migrate data from PostgreSQL to MatrixOne
    • Testing
      • TPCH Test with MatrixOne
      • TPCC Test with MatrixOne
      • Testing Tool
        • MO-Tester Specification
    • Performance Tuning
      • Understanding the Query Execution Plan
        • Using EXPLAIN to learn the execution plan
        • Explain Statements Using JOIN
        • Explain Statements Using Subqueries
        • Explain Statements Using Aggregation
        • EXPLAIN Statements Using Views
      • Performance tuning best practices
        • Scaling CN for better performance
        • Partition Pruning
        • Usage scenarios of Partition Pruning in KEY Partitioned Tables
        • Usage scenarios of Partition Pruning in HASH Partitioned Tables
        • Performance Tuning Examples for Partition Pruning
        • Constraints
        • Performance Tuning with Partitioned Tables
      • Optimizer Hints
    • Privilege
      • Authentication and Authorization
      • Password Management
      • Access Control
        • Privilege Management Scenario
        • Best Practices
      • User Guide
        • Create accounts, Verify Resource Isolation
        • Use the new account to creates users, roles, grant the privilege
      • Data Transmission Encryption
      • Security Audit
    • Reference
      • System Variables parameters
        • Save query result support
        • Timezone support
        • Lower case table names support
        • Foreign key checking support
        • User-specified case consistency support for query result set column names
        • Illegal login restrictions
        • Password complexity verification
        • Connection whitelist
        • Enable remap hint
      • event_scheduler
      • experimental_cagra_index
      • experimental_fulltext_index
      • experimental_hnsw_index
      • experimental_ivf_index
      • experimental_ivfpq_index
      • fulltext_bloom_filter_pushdown
      • lock_wait_timeout
      • protected_databases
      • sort_spill_mem
      • Custom variable
      • SQL Language Structure
        • Comments
      • Data Types
        • Data Type Conversion
        • Date and Time Types
          • YEAR Type
        • Geometry Type
        • JSON Data Type
        • BLOB and TEXT Type
        • DATALINK Type
        • ENUM Type
        • UUID Type
        • VECTOR Type
        • Fixed-Point Types (Exact Value) - DECIMAL
        • Set Type
      • SQL Statements
        • Data Definition Language
          • CREATE INDEX
          • CREATE INDEX...USING IVFFLAT
          • CREATE INDEX...USING HNSW
          • CREATE FULLTEXT INDEX
          • CREATE TABLE
          • CREATE TABLE AS SELECT
          • CREATE TABLE ... LIKE
          • CREATE EXTERNAL TABLE
          • CREATE CLUSTER TABLE
          • CREATE CLONE
          • CREATE PITR
          • CREATE PUBLICATION
          • CREATE SEQUENCE
          • CREATE STAGE
          • CREATE...FROM...PUBLICATION...
          • CREATE VIEW
          • CREATE FUNCTION...LANGUAGE SQL AS
          • CREATE FUNCTION...LANGUAGE PYTHON AS
          • CREATE SOURCE
          • CREATE DYNAMIC TABLE
          • CREATE SNAPSHOT
          • CREATE BRANCH
          • DELETE BRANCH
          • DIFF BRANCH
          • MERGE BRANCH
          • ALTER TABLE
          • ALTER TABLE ... ALTER REINDEX
          • ALTER PITR
          • ALTER PUBLICATION
          • ALTER SEQUENCE
          • ALTER STAGE
          • ALTER VIEW
          • DROP DATABASE
          • DROP INDEX
          • DROP TABLE
          • DROP PITR
          • DROP PUBLICATION
          • DROP SEQUENCE
          • DROP STAGE
          • DROP SNAPSHOT
          • DROP VIEW
          • DROP FUNCTION
          • TRUNCATE TABLE
          • RENAME TABLE
          • RESTORE PITR
          • RESTORE SNAPSHOT
          • Branch Protect Snapshots
          • Data Branch Pick
          • Sql Task
          • Data Branch Privilege
        • Data Manipulation Language
          • INSERT INTO SELECT
          • DELETE
          • UPDATE
          • LOAD DATA INFILE
          • LOAD DATA INLINE
          • UPSERT
            • INSERT ON DUPLICATE KEY UPDATE
            • INSERT IGNORE
            • REPLACE
          • Information Functions
            • LAST_INSERT_ID()
            • Current_Role
          • Case
          • Replace
        • Data Query Language
          • OUTER APPLY
          • JOIN
            • INNER JOIN
            • LEFT JOIN
            • RIGHT JOIN
            • FULL JOIN
            • OUTER JOIN
            • Examples
            • NATURAL JOIN
            • Cross Join
          • SELECT
          • BY RANK WITH OPTION
          • SUBQUERY
            • Derived Tables
            • Comparisons Using Subqueries
            • SUBQUERY with ANY or SOME
            • SUBQUERY with ALL
            • SUBQUERY with EXISTS
            • SUBQUERY with IN
          • With CTE
          • Combining Queries
            • UNION
            • INTERSECT
            • MINUS
        • Data Control Language
          • ALTER ACCOUNT
          • CREATE ROLE
          • CREATE USER
          • ALTER USER
          • DROP ACCOUNT
          • DROP USER
          • DROP ROLE
          • GRANT
          • REVOKE
          • Role Rule
        • Other
          • SHOW DATABASES
          • SHOW CREATE TABLE
          • SHOW CREATE VIEW
          • SHOW CREATE PUBLICATION
          • SHOW TABLES
          • SHOW INDEX
          • SHOW COLLATION
          • SHOW COLUMNS
          • SHOW FUNCTION STATUS
          • SHOW GRANT
          • SHOW PROCESSLIST
          • SHOW PUBLICATIONS
          • SHOW PITRS
          • SHOW ROLES
          • SHOW SEQUENCES
          • SHOW STAGE
          • SHOW SUBSCRIPTIONS
          • SHOW VARIABLES
          • Show Create Database
          • Show Table Status
          • SET
          • USE
          • KILL
          • Prepared Statements
            • EXECUTE
            • DEALLOCATE
          • Explain
            • EXPLAIN Output Format
            • Explain Analyze
            • Explain Prepared
          • Describe
      • Operators
        • OPERATORS
          • OPERATORS Precedence
          • Arithmetic Operators
            • %,MOD
            • *
            • +
            • -
            • -
            • /
            • DIV
          • Assignment Operators
            • =
          • Bit Functions and Operators
            • &
            • >>
            • <<
            • ^
            • |
            • ~
          • Cast Functions and Operators
            • BINARY
            • CAST
            • CONVERT
            • DECODE
            • ENCODE
            • SERIAL
            • SERIAL_FULL
          • Comparison Functions and Operators
            • >
            • >=
            • <
            • <>,!=
            • <=
            • =
            • BETWEEN ... AND ...
            • IN
            • IS
            • IS NOT
            • IS NOT NULL
            • IS NULL
            • ILIKE
            • ISNULL
            • LIKE
            • NOT BETWEEN ... AND ...
            • NOT IN
            • NOT LIKE
            • COALESCE
            • Function_Interval
            • Function_Greatest
            • Function_Least
            • Function_Strcmp
            • Null Safe Equal
          • Flow Control Functions
            • CASE WHEN
            • IF
            • IFNULL
            • NULLIF
          • Logical Operators
            • AND,&&
            • NOT,!
            • OR
            • XOR
      • Functions and Operators
        • Aggregate Functions
          • AVG
          • BITMAP
          • BIT_AND
          • BIT_OR
          • BIT_XOR
          • COUNT
          • GROUP_CONCAT
          • HLL_ADD_AGG
          • HLL_CARDINALITY
          • HLL_MERGE_AGG
          • MAX
          • MEDIAN
          • MIN
          • STDDEV_POP
          • SUM
          • VARIANCE
          • VAR_POP
        • Datetime
          • CURDATE()
          • CURRENT_TIMESTAMP()
          • DATE()
          • DATE_ADD()
          • DATE_FORMAT()
          • DATE_SUB()
          • DATEDIFF()
          • DAY()
          • DAYOFYEAR()
          • EXTRACT()
          • HOUR()
          • FROM_UNIXTIME
          • MINUTE()
          • MONTH()
          • NOW()
          • SECOND()
          • STR_TO_DATE()
          • SYSDATE()
          • TIME()
          • TIMEDIFF()
          • TIMESTAMP()
          • TIMESTAMPDIFF()
          • TO_DATE()
          • TO_DAYS()
          • TO_SECONDS()
          • UNIX_TIMESTAMP
          • UTC_TIMESTAMP()
          • WEEK()
          • WEEKDAY()
          • YEAR()
          • Addtime
          • Curtime
          • Dayname
          • Get Format
          • Maketime
          • Monthname
          • Quarter
          • Subtime
          • Time Format
          • Timestampadd
          • Yearweek
        • Geo Functions
          • H3 Index Functions
          • MBRContains
          • MBRCoveredBy
          • MBRCovers
          • MBRDisjoint
          • MBREquals
          • MBRIntersects
          • MBROverlaps
          • MBRTouches
          • MBRWithin
          • S2 Cell Functions
          • ST_Area()
          • ST_AsGeoJSON
          • ST_AsText()
          • ST_AsWKB()
          • ST_Boundary()
          • ST_Buffer()
          • ST_Centroid()
          • ST_Collect()
          • ST_Contains()
          • ST_ConvexHull()
          • ST_CoveredBy()
          • ST_Covers()
          • ST_Crosses()
          • ST_Difference()
          • ST_Dimension()
          • ST_Disjoint()
          • ST_Distance()
          • ST_Distance_Sphere()
          • ST_EndPoint()
          • ST_Envelope()
          • ST_Equals()
          • ST_ExteriorRing()
          • ST_FrechetDistance()
          • ST_GeoHash
          • ST_GeomCollFromText()
          • ST_GeomCollFromWKB()
          • ST_GeometryN()
          • ST_GeometryType()
          • ST_GeomFromGeoJSON
          • ST_GeomFromText()
          • ST_GeomFromWKB()
          • ST_HausdorffDistance()
          • ST_InteriorRingN()
          • ST_Intersection()
          • ST_Intersects()
          • ST_IsClosed()
          • ST_IsCollection()
          • ST_IsEmpty()
          • ST_IsRing()
          • ST_IsSimple()
          • ST_IsValid()
          • ST_LatFromGeoHash
          • ST_Latitude()
          • ST_Length()
          • ST_LineFromText()
          • ST_LineFromWKB()
          • ST_LineInterpolatePoint()
          • ST_LineInterpolatePoints()
          • ST_LongFromGeoHash
          • ST_Longitude()
          • ST_MakeEnvelope()
          • ST_MLineFromText()
          • ST_MLineFromWKB()
          • ST_MPointFromText()
          • ST_MPointFromWKB()
          • ST_MPolyFromText()
          • ST_MPolyFromWKB()
          • ST_NumGeometries()
          • ST_NumInteriorRings()
          • ST_NumPoints()
          • ST_Overlaps()
          • ST_PointAtDistance()
          • ST_PointFromGeoHash
          • ST_PointFromText()
          • ST_PointFromWKB()
          • ST_PointN()
          • ST_PointOnSurface()
          • ST_PolyFromText()
          • ST_PolyFromWKB()
          • ST_Simplify()
          • ST_SRID()
          • ST_StartPoint()
          • ST_SwapXY()
          • ST_SymDifference()
          • ST_Touches()
          • ST_Union()
          • ST_Validate()
          • ST_Within()
          • ST_X()
          • ST_Y()
        • Mathematical
          • ACOS()
          • ATAN()
          • BIT_COUNT()
          • CEIL()
          • CEILING()
          • COS()
          • COT()
          • CRC32()
          • EXP()
          • FLOOR()
          • LN()
          • LOG()
          • LOG2()
          • LOG10()
          • PI()
          • POWER()
          • ROUND()
          • RAND()
          • SIN()
          • SINH()
          • TAN()
          • Atan2
          • Degrees
          • Radians
          • Sign
          • Truncate
        • String
          • BIT_LENGTH()
          • CHAR_LENGTH()
          • CONCAT()
          • CONCAT_WS()
          • EMPTY()
          • ENDSWITH()
          • FIELD()
          • FIND_IN_SET()
          • FORMAT()
          • FROM_BASE64()
          • HEX()
          • INSTR()
          • LCASE()
          • LEFT()
          • LENGTH()
          • LOCATE()
          • LOWER()
          • LPAD()
          • LTRIM()
          • MD5()
          • NAME_CONST()
          • OCT()
          • REPEAT()
          • REVERSE()
          • RPAD()
          • RTRIM()
          • SHA1()/SHA()
          • SHA2()
          • SPACE()
          • SPLIT_PART()
          • STARTSWITH()
          • STRCMP()
          • SUBSTRING()
          • SUBSTRING_INDEX()
          • TO_BASE64()
          • TRIM()
          • UCASE()
          • UNHEX()
          • UPPER()
          • Regular Expressions
            • NOT REGEXP
            • REGEXP_INSTR()
            • REGEXP_LIKE()
            • REGEXP_REPLACE()
            • REGEXP_SUBSTR()
          • Aes_Decrypt
          • Aes_Encrypt
          • Elt
          • Quote
          • Right
        • Vector
          • Mathematical Calculations
          • CLUSTER_CENTERS()
          • COSINE_SIMILARITY()
          • COSINE_DISTANCE()
          • INNER_PRODUCT()
          • L1_NORM()
          • L2_NORM()
          • L2_DISTANCE()
          • NORMALIZE_L2()
          • SUBVECTOR()
          • VECTOR_DIMS()
        • Table
          • UNNEST()
        • Window Functions
          • RANK()
          • ROW_NUMBER()
          • Cume_Dist
          • Percent_Rank
        • JSON Functions
          • JSON_EXTRACT()
          • JSON_EXTRACT_FLOAT64()
          • JSON_EXTRACT_STRING()
          • JSON_QUOTE()
          • JSON_ROW()
          • JSON_SET()
          • JSON_UNQUOTE()
          • TRY_JQ()
          • Json Arrow
          • JSON_ARRAY()
            • JSON_KEYS()
            • JSON_LENGTH()
            • JSON_OBJECT()
            • JSON_PRETTY()
            • JSON_SCHEMA_VALID()
            • JSON_SCHEMA_VALIDATION_REPORT()
            • JSON_TYPE()
            • JSON_VALID()
            • JSON_VALUE()
          • JSON_KEYS()
          • JSON_LENGTH()
          • JSON_OBJECT()
          • JSON_PRETTY()
          • JSON_SCHEMA_VALID()
          • JSON_SCHEMA_VALIDATION_REPORT()
          • JSON_TYPE()
          • JSON_VALID()
          • JSON_VALUE()
        • Other Functions
          • SAVE_FILE()
          • SAMPLE()
          • SERIAL_EXTRACT()
          • SLEEP()
          • STAGE_LIST()
          • UUID()
        • System OPS Functions
          • CURRENT_ROLE()
          • CURRENT_USER_NAME()
          • CURRENT_USER()
          • PURGE_LOG()
          • GET_LOCK()
          • RELEASE_LOCK()
          • IS_FREE_LOCK()
          • IS_USED_LOCK()
          • RELEASE_ALL_LOCKS()
          • Version
      • System Paramaters
        • Standalone Common Parameters Configuration
        • Distributed Common Parameters Configuration
      • MatrixOne Catalog
      • Privilege Control Types
      • Limitations
        • Partitioning supported features list
      • MatrixOne Directory Structure
      • MatrixOne Tools
        • mo_ctl distributed Tools
        • mo_datax_writer tool
        • mo_ssb_open tool
        • mo_tpch_open tool
        • mo_ts_perf_test tool
        • Mo_Service
      • Mysql Compatibility Matrix
      • Mysql Unsupported Features
    • Troubleshooting
      • Common statistic data query
      • Database statistics
      • Error Code
    • FAQs
      • Deployment FAQs
      • SQL FAQs
    • Release Notes
    • Glossary
    • Contribution Guide
      • How to Contribute
        • Preparation
        • Report an Issue
        • Contribute Code
        • Review a Pull Request
        • Contribute Documentation
        • Make a Design
      • Code Style
        • Code Comment Style
        • Commit & Pull Request Style
  • Get Started
    • Deploy on macOS
      • Using binary package
      • Using Docker
    • Deploy on Linux
      • Using binary package
      • Using Docker
    • Basic SQL
  • Develop
    • Java connect to MatrixOne
      • Connect MatrixOne with Java ORMs
    • Python connect to MatrixOne
    • C# connect to MatrixOne
    • Connecting to MatrixOne with Golang
    • MatrixOne SSL connection
    • Connecting to MatrixOne with TypeScript
    • Schema Design
      • Create Database
      • Create Table
      • Replication table
      • Create View
      • Create Temporary Table
      • Create Secondary Index
      • Vector
      • Data Integrity
        • NOT NULL Constraints
        • UNIQUE KEY Constraints
        • PRIMARY KEY Constraints
        • FOREIGN KEY Constraints
        • AUTO INCREMENT Constraints
    • Write Data
      • Bulk Load
        • Load csv format data
        • Load jsonlines format data
        • Load data from S3
        • Load data by using the `source`
      • Update Data
      • Delete Data
      • Prepared
    • Export Data
      • Export data by MODUMP
    • Read Data
      • Multi-table Join Queries
      • Subquery
      • Views
      • Common Table Expression
      • Window Function
        • Time Window
    • Data de-duplication
      • BITMAP
    • Account Design
      • Publish-Subscribe
    • Transactions
      • Transaction by MatrixOne Server
        • Explicit Transaction
        • Implicit Transaction
        • Pessimistic Transaction
        • Optimistic Transaction
        • Isolation Level
        • MVCC
        • User Guide
          • Scenario
        • Scenario
    • User-defined function
      • UDF python advanced
    • Vector
      • Vector Search
      • IVF Rank Options
      • Cluster Centers
    • Ecological Tools
      • Visualizing MatrixOne Reports with Yonghong BI
      • Visual Monitoring of MatrixOne with Superset
      • ETL Tools
        • Writing Data from MySQL to MatrixOne
        • Writing Data from Oracle to MatrixOne
        • Using DataX to write data to MatrixOne
          • Writing Data from MySQL to MatrixOne
          • Writing Data from Oracle to MatrixOne
          • Writing Data from PostgreSQL to MatrixOne
          • Writing Data from SQL Server to MatrixOne
          • Writing Data from MongoDB to MatrixOne
          • Writing Data from TiDB to MatrixOne
          • Writing Data from ClickHouse to MatrixOne
          • Writing Data from Doris to MatrixOne
          • Writing Data from InfluxDB to MatrixOne
          • Writing Data from Elasticsearch to MatrixOne
      • Computing Engine
        • Writing Data from MySQL to MatrixOne
        • Writing Data from Hive to MatrixOne
        • Writing Data from Doris to MatrixOne
        • Using Flink to Write Real-Time Data to MatrixOne
          • Writing Data from MySQL to MatrixOne
          • Writing Data from Oracle to MatrixOne
          • Writing Data from SQL Server to MatrixOne
          • Writing Data from PostgreSQL to MatrixOne
          • Writing Data from MongoDB to MatrixOne
          • Writing Data from TiDB to MatrixOne
          • Writing Data from Kafka to MatrixOne
      • Scheduling Tools
    • Develop Overview
    • AI Agent Tools
      • Query MatrixOne Documentation with AI Agent
  • Tutorial
    • SpringBoot and JPA CRUD demo
    • SpringBoot and MyBatis CRUD demo
    • PyMySQL CRUD demo
    • SQLAlchemy CRUD demo
    • Django CRUD demo
    • Golang CRUD demo
    • Gorm CRUD demo
    • C# CRUD demo
    • TypeScript Basic Example
    • HTAP Application demo
    • RAG Application demo
    • Safe Production Upgrade with Instant Rollback
    • Instant Clone for Multi-Team Development
    • Pinecone-Compatible Vector Search
    • IVF Index Health Monitoring
    • HNSW Vector Index
    • Hybrid Search (Vector + Fulltext + SQL)
    • Fulltext Natural Search
    • Fulltext Boolean Search
    • Fulltext JSON Search
    • Picture(Text)-to-Picture Search Application demo
    • Dify Platform Integration Guide for MatrixOne
    • Prerequisites
    • Steps
    • Git4Data Demo
  • Deploy
    • Plan MatrixOne Cluster Topology
      • Experience Environment Deployment Plan
      • Minimum Production Environment Deployment Plan
      • Recommended Production Environment Deployment Plan
    • Cluster Deployment Guide
      • Deployed Kubernetes and object storage environment
    • Cluster Operations Management
      • Updating
      • Health check and resource monitoring
      • Scaling
      • Managing CN Groups with Proxy
      • Import data from local Minio to MatrixOne
      • Operator Management
    • Deploy Matrixone Cluster
  • Operations
    • Backup and Recovery Concepts
    • Backup and Restore by using mo-dump
    • mo_br Backup and Recovery
      • Principle overview
      • Example
      • mo_br snapshot backup recovery
      • mo_br pitr
    • MatrixOne active/standby disaster recovery
    • cdc
      • From MatrixOne to MySQL
      • From MatrixOne to MatrixOne
    • Mount Data
  • Migrate
    • Migrate data from MySQL to MatrixOne
    • Migrate data from SQL Server to MatrixOne
    • Migrate data from SQL Server to MatrixOne
    • Migrate data from PostgreSQL to MatrixOne
  • Test
    • TPCH Test with MatrixOne
    • TPCC Test with MatrixOne
    • Testing Tool
      • MO-Tester Specification
  • Performance
    • Understanding the Query Execution Plan
      • Using EXPLAIN to learn the execution plan
      • Explain Statements Using JOIN
      • Explain Statements Using Subqueries
      • Explain Statements Using Aggregation
      • EXPLAIN Statements Using Views
    • Performance tuning best practices
      • Scaling CN for better performance
      • Partition Pruning
      • Usage scenarios of Partition Pruning in KEY Partitioned Tables
      • Usage scenarios of Partition Pruning in HASH Partitioned Tables
      • Performance Tuning Examples for Partition Pruning
      • Constraints
      • Performance Tuning with Partitioned Tables
    • Optimizer Hints
  • Security
    • Authentication and Authorization
    • Password Management
    • Access Control
      • Privilege Management Scenario
      • Best Practices
    • User Guide
      • Create accounts, Verify Resource Isolation
      • Use the new account to creates users, roles, grant the privilege
    • Data Transmission Encryption
    • Security Audit
  • Reference
    • System Variables parameters
      • Save query result support
      • Timezone support
      • Lower case table names support
      • Foreign key checking support
      • User-specified case consistency support for query result set column names
      • Illegal login restrictions
      • Password complexity verification
      • Connection whitelist
      • Enable remap hint
    • event_scheduler
    • experimental_cagra_index
    • experimental_fulltext_index
    • experimental_hnsw_index
    • experimental_ivf_index
    • experimental_ivfpq_index
    • fulltext_bloom_filter_pushdown
    • lock_wait_timeout
    • protected_databases
    • sort_spill_mem
    • Custom variable
    • SQL Language Structure
      • Comments
    • Data Types
      • Data Type Conversion
      • Date and Time Types
        • YEAR Type
      • Geometry Type
      • JSON Data Type
      • BLOB and TEXT Type
      • DATALINK Type
      • ENUM Type
      • UUID Type
      • VECTOR Type
      • Fixed-Point Types (Exact Value) - DECIMAL
      • Set Type
    • SQL Statements
      • Data Definition Language
        • CREATE INDEX
        • CREATE INDEX...USING IVFFLAT
        • CREATE INDEX...USING HNSW
        • CREATE FULLTEXT INDEX
        • CREATE TABLE
        • CREATE TABLE AS SELECT
        • CREATE TABLE ... LIKE
        • CREATE EXTERNAL TABLE
        • CREATE CLUSTER TABLE
        • CREATE CLONE
        • CREATE PITR
        • CREATE PUBLICATION
        • CREATE SEQUENCE
        • CREATE STAGE
        • CREATE...FROM...PUBLICATION...
        • CREATE VIEW
        • CREATE FUNCTION...LANGUAGE SQL AS
        • CREATE FUNCTION...LANGUAGE PYTHON AS
        • CREATE SOURCE
        • CREATE DYNAMIC TABLE
        • CREATE SNAPSHOT
        • CREATE BRANCH
        • DELETE BRANCH
        • DIFF BRANCH
        • MERGE BRANCH
        • ALTER TABLE
        • ALTER TABLE ... ALTER REINDEX
        • ALTER PITR
        • ALTER PUBLICATION
        • ALTER SEQUENCE
        • ALTER STAGE
        • ALTER VIEW
        • DROP DATABASE
        • DROP INDEX
        • DROP TABLE
        • DROP PITR
        • DROP PUBLICATION
        • DROP SEQUENCE
        • DROP STAGE
        • DROP SNAPSHOT
        • DROP VIEW
        • DROP FUNCTION
        • TRUNCATE TABLE
        • RENAME TABLE
        • RESTORE PITR
        • RESTORE SNAPSHOT
        • Branch Protect Snapshots
        • Data Branch Pick
        • Sql Task
        • Data Branch Privilege
      • Data Manipulation Language
        • INSERT INTO SELECT
        • DELETE
        • UPDATE
        • LOAD DATA INFILE
        • LOAD DATA INLINE
        • UPSERT
          • INSERT ON DUPLICATE KEY UPDATE
          • INSERT IGNORE
          • REPLACE
        • Information Functions
          • LAST_INSERT_ID()
          • Current_Role
        • Case
        • Replace
      • Data Query Language
        • OUTER APPLY
        • JOIN
          • INNER JOIN
          • LEFT JOIN
          • RIGHT JOIN
          • FULL JOIN
          • OUTER JOIN
          • Examples
          • NATURAL JOIN
          • Cross Join
        • SELECT
        • BY RANK WITH OPTION
        • SUBQUERY
          • Derived Tables
          • Comparisons Using Subqueries
          • SUBQUERY with ANY or SOME
          • SUBQUERY with ALL
          • SUBQUERY with EXISTS
          • SUBQUERY with IN
        • With CTE
        • Combining Queries
          • UNION
          • INTERSECT
          • MINUS
      • Data Control Language
        • ALTER ACCOUNT
        • CREATE ROLE
        • CREATE USER
        • ALTER USER
        • DROP ACCOUNT
        • DROP USER
        • DROP ROLE
        • GRANT
        • REVOKE
        • Role Rule
      • Other
        • SHOW DATABASES
        • SHOW CREATE TABLE
        • SHOW CREATE VIEW
        • SHOW CREATE PUBLICATION
        • SHOW TABLES
        • SHOW INDEX
        • SHOW COLLATION
        • SHOW COLUMNS
        • SHOW FUNCTION STATUS
        • SHOW GRANT
        • SHOW PROCESSLIST
        • SHOW PUBLICATIONS
        • SHOW PITRS
        • SHOW ROLES
        • SHOW SEQUENCES
        • SHOW STAGE
        • SHOW SUBSCRIPTIONS
        • SHOW VARIABLES
        • Show Create Database
        • Show Table Status
        • SET
        • USE
        • KILL
        • Prepared Statements
          • EXECUTE
          • DEALLOCATE
        • Explain
          • EXPLAIN Output Format
          • Explain Analyze
          • Explain Prepared
        • Describe
    • Operators
      • OPERATORS
        • OPERATORS Precedence
        • Arithmetic Operators
          • %,MOD
          • *
          • +
          • -
          • -
          • /
          • DIV
        • Assignment Operators
          • =
        • Bit Functions and Operators
          • &
          • >>
          • <<
          • ^
          • |
          • ~
        • Cast Functions and Operators
          • BINARY
          • CAST
          • CONVERT
          • DECODE
          • ENCODE
          • SERIAL
          • SERIAL_FULL
        • Comparison Functions and Operators
          • >
          • >=
          • <
          • <>,!=
          • <=
          • =
          • BETWEEN ... AND ...
          • IN
          • IS
          • IS NOT
          • IS NOT NULL
          • IS NULL
          • ILIKE
          • ISNULL
          • LIKE
          • NOT BETWEEN ... AND ...
          • NOT IN
          • NOT LIKE
          • COALESCE
          • Function_Interval
          • Function_Greatest
          • Function_Least
          • Function_Strcmp
          • Null Safe Equal
        • Flow Control Functions
          • CASE WHEN
          • IF
          • IFNULL
          • NULLIF
        • Logical Operators
          • AND,&&
          • NOT,!
          • OR
          • XOR
    • Functions and Operators
      • Aggregate Functions
        • AVG
        • BITMAP
        • BIT_AND
        • BIT_OR
        • BIT_XOR
        • COUNT
        • GROUP_CONCAT
        • HLL_ADD_AGG
        • HLL_CARDINALITY
        • HLL_MERGE_AGG
        • MAX
        • MEDIAN
        • MIN
        • STDDEV_POP
        • SUM
        • VARIANCE
        • VAR_POP
      • Datetime
        • CURDATE()
        • CURRENT_TIMESTAMP()
        • DATE()
        • DATE_ADD()
        • DATE_FORMAT()
        • DATE_SUB()
        • DATEDIFF()
        • DAY()
        • DAYOFYEAR()
        • EXTRACT()
        • HOUR()
        • FROM_UNIXTIME
        • MINUTE()
        • MONTH()
        • NOW()
        • SECOND()
        • STR_TO_DATE()
        • SYSDATE()
        • TIME()
        • TIMEDIFF()
        • TIMESTAMP()
        • TIMESTAMPDIFF()
        • TO_DATE()
        • TO_DAYS()
        • TO_SECONDS()
        • UNIX_TIMESTAMP
        • UTC_TIMESTAMP()
        • WEEK()
        • WEEKDAY()
        • YEAR()
        • Addtime
        • Curtime
        • Dayname
        • Get Format
        • Maketime
        • Monthname
        • Quarter
        • Subtime
        • Time Format
        • Timestampadd
        • Yearweek
      • Geo Functions
        • H3 Index Functions
        • MBRContains
        • MBRCoveredBy
        • MBRCovers
        • MBRDisjoint
        • MBREquals
        • MBRIntersects
        • MBROverlaps
        • MBRTouches
        • MBRWithin
        • S2 Cell Functions
        • ST_Area()
        • ST_AsGeoJSON
        • ST_AsText()
        • ST_AsWKB()
        • ST_Boundary()
        • ST_Buffer()
        • ST_Centroid()
        • ST_Collect()
        • ST_Contains()
        • ST_ConvexHull()
        • ST_CoveredBy()
        • ST_Covers()
        • ST_Crosses()
        • ST_Difference()
        • ST_Dimension()
        • ST_Disjoint()
        • ST_Distance()
        • ST_Distance_Sphere()
        • ST_EndPoint()
        • ST_Envelope()
        • ST_Equals()
        • ST_ExteriorRing()
        • ST_FrechetDistance()
        • ST_GeoHash
        • ST_GeomCollFromText()
        • ST_GeomCollFromWKB()
        • ST_GeometryN()
        • ST_GeometryType()
        • ST_GeomFromGeoJSON
        • ST_GeomFromText()
        • ST_GeomFromWKB()
        • ST_HausdorffDistance()
        • ST_InteriorRingN()
        • ST_Intersection()
        • ST_Intersects()
        • ST_IsClosed()
        • ST_IsCollection()
        • ST_IsEmpty()
        • ST_IsRing()
        • ST_IsSimple()
        • ST_IsValid()
        • ST_LatFromGeoHash
        • ST_Latitude()
        • ST_Length()
        • ST_LineFromText()
        • ST_LineFromWKB()
        • ST_LineInterpolatePoint()
        • ST_LineInterpolatePoints()
        • ST_LongFromGeoHash
        • ST_Longitude()
        • ST_MakeEnvelope()
        • ST_MLineFromText()
        • ST_MLineFromWKB()
        • ST_MPointFromText()
        • ST_MPointFromWKB()
        • ST_MPolyFromText()
        • ST_MPolyFromWKB()
        • ST_NumGeometries()
        • ST_NumInteriorRings()
        • ST_NumPoints()
        • ST_Overlaps()
        • ST_PointAtDistance()
        • ST_PointFromGeoHash
        • ST_PointFromText()
        • ST_PointFromWKB()
        • ST_PointN()
        • ST_PointOnSurface()
        • ST_PolyFromText()
        • ST_PolyFromWKB()
        • ST_Simplify()
        • ST_SRID()
        • ST_StartPoint()
        • ST_SwapXY()
        • ST_SymDifference()
        • ST_Touches()
        • ST_Union()
        • ST_Validate()
        • ST_Within()
        • ST_X()
        • ST_Y()
      • Mathematical
        • ACOS()
        • ATAN()
        • BIT_COUNT()
        • CEIL()
        • CEILING()
        • COS()
        • COT()
        • CRC32()
        • EXP()
        • FLOOR()
        • LN()
        • LOG()
        • LOG2()
        • LOG10()
        • PI()
        • POWER()
        • ROUND()
        • RAND()
        • SIN()
        • SINH()
        • TAN()
        • Atan2
        • Degrees
        • Radians
        • Sign
        • Truncate
      • String
        • BIT_LENGTH()
        • CHAR_LENGTH()
        • CONCAT()
        • CONCAT_WS()
        • EMPTY()
        • ENDSWITH()
        • FIELD()
        • FIND_IN_SET()
        • FORMAT()
        • FROM_BASE64()
        • HEX()
        • INSTR()
        • LCASE()
        • LEFT()
        • LENGTH()
        • LOCATE()
        • LOWER()
        • LPAD()
        • LTRIM()
        • MD5()
        • NAME_CONST()
        • OCT()
        • REPEAT()
        • REVERSE()
        • RPAD()
        • RTRIM()
        • SHA1()/SHA()
        • SHA2()
        • SPACE()
        • SPLIT_PART()
        • STARTSWITH()
        • STRCMP()
        • SUBSTRING()
        • SUBSTRING_INDEX()
        • TO_BASE64()
        • TRIM()
        • UCASE()
        • UNHEX()
        • UPPER()
        • Regular Expressions
          • NOT REGEXP
          • REGEXP_INSTR()
          • REGEXP_LIKE()
          • REGEXP_REPLACE()
          • REGEXP_SUBSTR()
        • Aes_Decrypt
        • Aes_Encrypt
        • Elt
        • Quote
        • Right
      • Vector
        • Mathematical Calculations
        • CLUSTER_CENTERS()
        • COSINE_SIMILARITY()
        • COSINE_DISTANCE()
        • INNER_PRODUCT()
        • L1_NORM()
        • L2_NORM()
        • L2_DISTANCE()
        • NORMALIZE_L2()
        • SUBVECTOR()
        • VECTOR_DIMS()
      • Table
        • UNNEST()
      • Window Functions
        • RANK()
        • ROW_NUMBER()
        • Cume_Dist
        • Percent_Rank
      • JSON Functions
        • JSON_EXTRACT()
        • JSON_EXTRACT_FLOAT64()
        • JSON_EXTRACT_STRING()
        • JSON_QUOTE()
        • JSON_ROW()
        • JSON_SET()
        • JSON_UNQUOTE()
        • TRY_JQ()
        • Json Arrow
        • JSON_ARRAY()
          • JSON_KEYS()
          • JSON_LENGTH()
          • JSON_OBJECT()
          • JSON_PRETTY()
          • JSON_SCHEMA_VALID()
          • JSON_SCHEMA_VALIDATION_REPORT()
          • JSON_TYPE()
          • JSON_VALID()
          • JSON_VALUE()
        • JSON_KEYS()
        • JSON_LENGTH()
        • JSON_OBJECT()
        • JSON_PRETTY()
        • JSON_SCHEMA_VALID()
        • JSON_SCHEMA_VALIDATION_REPORT()
        • JSON_TYPE()
        • JSON_VALID()
        • JSON_VALUE()
      • Other Functions
        • SAVE_FILE()
        • SAMPLE()
        • SERIAL_EXTRACT()
        • SLEEP()
        • STAGE_LIST()
        • UUID()
      • System OPS Functions
        • CURRENT_ROLE()
        • CURRENT_USER_NAME()
        • CURRENT_USER()
        • PURGE_LOG()
        • GET_LOCK()
        • RELEASE_LOCK()
        • IS_FREE_LOCK()
        • IS_USED_LOCK()
        • RELEASE_ALL_LOCKS()
        • Version
    • System Paramaters
      • Standalone Common Parameters Configuration
      • Distributed Common Parameters Configuration
    • MatrixOne Catalog
    • Privilege Control Types
    • Limitations
      • Partitioning supported features list
    • MatrixOne Directory Structure
    • MatrixOne Tools
      • mo_ctl distributed Tools
      • mo_datax_writer tool
      • mo_ssb_open tool
      • mo_tpch_open tool
      • mo_ts_perf_test tool
      • Mo_Service
    • Mysql Compatibility Matrix
    • Mysql Unsupported Features
  • Troubleshooting
    • Common statistic data query
    • Database statistics
    • Error Code
  • FAQs
    • Deployment FAQs
    • SQL FAQs
  • Release Notes
    • MatrixOne v26.4.1.4 Release Notes
    • MatrixOne v26.4.1.3 Release Notes
    • MatrixOne v26.4.1.2 Release Notes
    • MatrixOne v26.4.1.1 Release Notes
    • MatrixOne v26.4.1.0 Release Notes
    • MatrixOne v26.4.0.0-rc4 Release Notes
    • MatrixOne v26.4.0.0-rc3 Release Notes
    • MatrixOne v26.4.0.0-rc2 Release Notes
    • MatrixOne v26.4.0.0-rc1 Release Notes
    • MatrixOne v26.3.0.10 Release Notes
    • MatrixOne v26.3.0.11 Release Notes
    • MatrixOne v26.3.0.12 Release Notes
    • MatrixOne v26.3.0.13 Release Notes
    • MatrixOne v26.3.0.14 Release Notes
    • MatrixOne v26.3.0.15 Release Notes
    • MatrixOne v26.3.0.5 Release Notes
    • MatrixOne v26.3.0.6 Release Notes
    • MatrixOne v26.3.0.7 Release Notes
    • MatrixOne v26.3.0.8 Release Notes
    • MatrixOne v26.3.0.9 Release Notes
    • MatrixOne v25.2.0.2 Release Notes
    • MatrixOne v25.2.0.3 Release Notes
    • MatrixOne v25.2.1.0 Release Note
    • MatrixOne v25.2.1.1 Release Notes
    • MatrixOne v25.2.2.0 Release Notes
    • MatrixOne v25.2.2.1 Release Notes
    • MatrixOne v25.2.2.2 Release Notes
    • MatrixOne v25.3.0.0 Release Note
    • MatrixOne v25.3.0.1 Release Notes
    • MatrixOne v25.3.0.2 Release Notes
    • MatrixOne v25.3.0.3 Release Notes
    • MatrixOne v25.3.0.4 Release Notes
    • Key Improvements
    • MatrixOne v24.1.1.1 Release Notes
    • MatrixOne v24.1.1.2 Release Notes
    • MatrixOne v24.1.1.3 Release Notes
    • MatrixOne v24.1.2.0 Release Notes
    • MatrixOne v24.1.2.1 Release Notes
    • MatrixOne v24.1.2.2 Release Notes
    • MatrixOne v24.1.2.3 Release Notes
    • MatrixOne v24.1.2.4 Release Notes
    • MatrixOne v24.2.0.0 Release Notes
    • MatrixOne v24.2.0.1 Release Notes
    • MatrixOne v23.0.7.0 Release Notes
    • MatrixOne v0.8.0 Release Notes
    • MatrixOne v23.1.0.0 Release Notes
    • MatrixOne v23.1.0.0-RC1 Release Notes
    • MatrixOne v23.1.0.0-RC2 Release Notes
    • MatrixOne v23.1.0.1 Release Notes
    • MatrixOne v23.1.0.2 Release Notes
    • MatrixOne v23.1.1.0 Release Notes
    • MatrixOne v22.0.2.0 Release Notes
    • MatrixOne v22.0.3.0 Release Notes
    • Docker
    • Features
    • Known issues
    • Contributors
    • MatrixOne v22.0.4.0 Release Notes
    • Docker
    • Features
    • Known issues
    • Contributors
    • MatrixOne v22.0.5.0 Release Notes
    • MatrixOne v22.0.5.1 Release Notes
    • MatrixOne v220.6.0 Release Notes
    • MatrixOne v21.0.1.0 Release Notes
  • Glossary
  • Contribute
    • How to Contribute
      • Preparation
      • Report an Issue
      • Contribute Code
      • Review a Pull Request
      • Contribute Documentation
      • Make a Design
    • Code Style
      • Code Comment Style
      • Commit & Pull Request Style
Back to top

Writing MySQL data to MatrixOne using Flink¶

This chapter describes how to write MySQL data to MatrixOne using Flink.

Pre-preparation¶

This practice requires the installation and deployment of the following software environments:

  • Complete standalone MatrixOne deployment.

  • Download and install lntelliJ IDEA (2022.2.1 or later version).

  • Select the JDK 8+ version version to download and install depending on your system environment.

  • Download and install Flink with a minimum supported version of 1.11.

  • Download and install MySQL, the recommended version is 8.0.33.

Operational steps¶

Step one: Initialize the project¶

  1. Open IDEA, click File > New > Project, select Spring Initializer, and fill in the following configuration parameters:

    • Name:matrixone-flink-demo

    • Location:~\Desktop

    • Language:Java

    • Type:Maven

    • Group:com.example

    • Artifact:matrixone-flink-demo

    • Package name:com.matrixone.flink.demo

    • JDK 1.8

    An example configuration is shown in the following figure:

  2. Add project dependencies, edit the pom.xml file in the root of your project, and add the following to the file:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.matrixone.flink</groupId>
    <artifactId>matrixone-flink-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <scala.binary.version>2.12</scala.binary.version>
        <java.version>1.8</java.version>
        <flink.version>1.17.0</flink.version>
        <scope.mode>compile</scope.mode>
    </properties>

    <dependencies>

        <!-- Flink Dependency -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-connector-hive_2.12</artifactId>
            <version>${flink.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-java</artifactId>
            <version>${flink.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-java</artifactId>
            <version>${flink.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-clients</artifactId>
            <version>${flink.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-api-java-bridge</artifactId>
            <version>${flink.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-planner_2.12</artifactId>
            <version>${flink.version}</version>
        </dependency>

        <!-- JDBC相关依赖包 -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-connector-jdbc</artifactId>
            <version>1.15.4</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>

        <!-- Kafka相关依赖 -->
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_2.13</artifactId>
            <version>3.5.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-connector-kafka</artifactId>
            <version>3.0.0-1.17</version>
        </dependency>

        <!-- JSON -->
        <dependency>
            <groupId>com.alibaba.fastjson2</groupId>
            <artifactId>fastjson2</artifactId>
            <version>2.0.34</version>
        </dependency>

    </dependencies>




    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <descriptorRefs>
                        <descriptor>jar-with-dependencies</descriptor>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>

</project>

Step Two: Read MatrixOne Data¶

After connecting to MatrixOne using a MySQL client, create the database you need for the demo, as well as the data tables.

  1. Create databases, data tables, and import data in MatrixOne:

    CREATE DATABASE test;
    USE test;
    CREATE TABLE `person` (`id` INT DEFAULT NULL, `name` VARCHAR(255) DEFAULT NULL, `birthday` DATE DEFAULT NULL);
    INSERT INTO test.person (id, name, birthday) VALUES(1, 'zhangsan', '2023-07-09'),(2, 'lisi', '2023-07-08'),(3, 'wangwu', '2023-07-12');
    
  2. Create a MoRead.java class in IDEA to read MatrixOne data using Flink:

    package com.matrixone.flink.demo;
    
    import org.apache.flink.api.common.functions.MapFunction;
    import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
    import org.apache.flink.api.java.ExecutionEnvironment;
    import org.apache.flink.api.java.operators.DataSource;
    import org.apache.flink.api.java.operators.MapOperator;
    import org.apache.flink.api.java.typeutils.RowTypeInfo;
    import org.apache.flink.connector.jdbc.JdbcInputFormat;
    import org.apache.flink.types.Row;
    
    import java.text.SimpleDateFormat;
    
    /**
     * @author MatrixOne
     * @description
     */
    public class MoRead {
        private static String srcHost = "xx.xx.xx.xx";
        private static Integer srcPort = 6001;
        private static String srcUserName = "root";
        private static String srcPassword = "111";
        private static String srcDataBase = "test";
    
        public static void main(String[] args) throws Exception {
    
            ExecutionEnvironment environment = ExecutionEnvironment.getExecutionEnvironment();
            // Set parallelism
            environment.setParallelism(1);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    
            // Set the field type of the query
            RowTypeInfo rowTypeInfo = new RowTypeInfo(
                    new BasicTypeInfo[]{
                            BasicTypeInfo.INT_TYPE_INFO,
                            BasicTypeInfo.STRING_TYPE_INFO,
                            BasicTypeInfo.DATE_TYPE_INFO
                    },
                    new String[]{
                            "id",
                            "name",
                            "birthday"
                    }
            );
    
            DataSource<Row> dataSource = environment.createInput(JdbcInputFormat.buildJdbcInputFormat()
                    .setDrivername("com.mysql.cj.jdbc.Driver")
                    .setDBUrl("jdbc:mysql://" + srcHost + ":" + srcPort + "/" + srcDataBase)
                    .setUsername(srcUserName)
                    .setPassword(srcPassword)
                    .setQuery("select * from person")
                    .setRowTypeInfo(rowTypeInfo)
                    .finish());
    
            // Convert Wed Jul 12 00:00:00 CST 2023 date format to 2023-07-12
            MapOperator<Row, Row> mapOperator = dataSource.map((MapFunction<Row, Row>) row -> {
                row.setField("birthday", sdf.format(row.getField("birthday")));
                return row;
            });
    
            mapOperator.print();
        }
    } 
    
  3. Run MoRead.Main() in IDEA with the following result:

    MoRead execution results

Step Three: Write MySQL Data to MatrixOne¶

You can now start migrating MySQL data to MatrixOne using Flink.

  1. Prepare MySQL data: On node3, connect to your local Mysql using the Mysql client, create the required database, data table, and insert the data:

    mysql -h127.0.0.1 -P3306 -uroot -proot
    
    CREATE DATABASE motest;
    USE motest;
    CREATE TABLE `person` (`id` int DEFAULT NULL, `name` varchar(255) DEFAULT NULL, `birthday` date DEFAULT NULL);
    INSERT INTO motest.person (id, name, birthday) VALUES(2, 'lisi', '2023-07-09'),(3, 'wangwu', '2023-07-13'),(4, 'zhaoliu', '2023-08-08');
    
  2. Empty MatrixOne table data:

    On node3, connect node1’s MatrixOne using a MySQL client. Since this example continues to use the test database from the example that read the MatrixOne data earlier, we need to first empty the data from the person table.

    -- on node3, connect node1's MatrixOne 
    mysql -hxx.xx.xx.xx -P6001 -uroot -p111 
    
    TRUNCATE TABLE test.person;
    
  3. Write code in IDEA:

    Create Person.java and Mysql2Mo.java classes, use Flink to read MySQL data, perform simple ETL operations (convert Row to Person object), and finally write the data to MatrixOne.

package com.matrixone.flink.demo.entity;


import java.util.Date;

public class Person {

    private int id;
    private String name;
    private Date birthday;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
} 
package com.matrixone.flink.demo;

import com.matrixone.flink.demo.entity.Person;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
import org.apache.flink.api.java.typeutils.RowTypeInfo;
import org.apache.flink.connector.jdbc.*;
import org.apache.flink.streaming.api.datastream.DataStreamSink;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.types.Row;

import java.sql.Date;

/**
 * @author MatrixOne
 * @description
 */
public class Mysql2Mo {

    private static String srcHost = "127.0.0.1";
    private static Integer srcPort = 3306;
    private static String srcUserName = "root";
    private static String srcPassword = "root";
    private static String srcDataBase = "motest";

    private static String destHost = "xx.xx.xx.xx";
    private static Integer destPort = 6001;
    private static String destUserName = "root";
    private static String destPassword = "111";
    private static String destDataBase = "test";
    private static String destTable = "person";


    public static void main(String[] args) throws Exception {

        StreamExecutionEnvironment environment = StreamExecutionEnvironment.getExecutionEnvironment();
        // Set parallelism
        environment.setParallelism(1);
        // Set the field type of the query
        RowTypeInfo rowTypeInfo = new RowTypeInfo(
                new BasicTypeInfo[]{
                        BasicTypeInfo.INT_TYPE_INFO,
                        BasicTypeInfo.STRING_TYPE_INFO,
                        BasicTypeInfo.DATE_TYPE_INFO
                },
                new String[]{
                        "id",
                        "name",
                        "birthday"
                }
        );

        // Add srouce
        DataStreamSource<Row> dataSource = environment.createInput(JdbcInputFormat.buildJdbcInputFormat()
                .setDrivername("com.mysql.cj.jdbc.Driver")
                .setDBUrl("jdbc:mysql://" + srcHost + ":" + srcPort + "/" + srcDataBase)
                .setUsername(srcUserName)
                .setPassword(srcPassword)
                .setQuery("select * from person")
                .setRowTypeInfo(rowTypeInfo)
                .finish());

        // Conduct ETL
        SingleOutputStreamOperator<Person> mapOperator = dataSource.map((MapFunction<Row, Person>) row -> {
            Person person = new Person();
            person.setId((Integer) row.getField("id"));
            person.setName((String) row.getField("name"));
            person.setBirthday((java.util.Date)row.getField("birthday"));
            return person;
        });

        // Set matrixone sink information
        mapOperator.addSink(
                JdbcSink.sink(
                        "insert into " + destTable + " values(?,?,?)",
                        (ps, t) -> {
                            ps.setInt(1, t.getId());
                            ps.setString(2, t.getName());
                            ps.setDate(3, new Date(t.getBirthday().getTime()));
                        },
                        new JdbcConnectionOptions.JdbcConnectionOptionsBuilder()
                                .withDriverName("com.mysql.cj.jdbc.Driver")
                                .withUrl("jdbc:mysql://" + destHost + ":" + destPort + "/" + destDataBase)
                                .withUsername(destUserName)
                                .withPassword(destPassword)
                                .build()
                )
        );

        environment.execute();
    }

} 

Step Four: View Implementation Results¶

Execute the following SQL query results in MatrixOne:

mysql> select * from test.person;
+------+---------+------------+
| id   | name    | birthday   |
+------+---------+------------+
|    2 | lisi    | 2023-07-09 |
|    3 | wangwu  | 2023-07-13 |
|    4 | zhaoliu | 2023-08-08 |
+------+---------+------------+
3 rows in set (0.01 sec)
Next
Write Oracle data to MatrixOne using Flink
Previous
Overview
Copyright © 2026, MatrixOrigin
Made with Sphinx and @pradyunsg's Furo
On this page
  • Writing MySQL data to MatrixOne using Flink
    • Pre-preparation
    • Operational steps
      • Step one: Initialize the project
      • Step Two: Read MatrixOne Data
      • Step Three: Write MySQL Data to MatrixOne
      • Step Four: View Implementation Results