㈠ flink1.12.1擴展flink-sql 支持寫入到sqlserver
目前業務上有同步數據到sqlServer的需求,但是flink1.12.1版本的JdbcDialects不支持SqlServerDialect,
科學上網後發現袋鼠雲的flinkStreamSql已經有支持sqlserver,那就開始動手,參考實現一波
主要實現getUpsertStatement的方法,本來以為能直接一波flinkStreamSql 的實現,結果發現
報錯 SQL statement must not contain ? character.
查看源碼發現, flink在構建mysql的Statement,是先把需要替換的欄位前面拼接了 : fieldNames,然後在org.apache.flink.connector.jdbc.statement.類的parseNamedStatement 替換成 ?號, 既然如此,就針對了buildDualQueryStatement進行修改
完整的SqlServerDialect文件
最後替換原有的flink-jar包後,就可以用類似flink定義mysql的ddl進行定義表了
注意url寫法為:jdbc:jtds:sqlserver://xxx:1433;databaseName=master;
[flinkStreamSQL鏈接] https://github.com/DTStack/flinkStreamSQL/blob/1.11_release/sqlserver/sqlserver-sink/src/main/java/com/dtstack/flink/sql/sink/sqlserver/SqlserverDialect.java
㈡ mongod可以代替sqlserver嗎
可以,並且有這些優勢
1、使用JSON風格語法,易於掌握和理解:MongoDB使用JSON的變種BSON作為內部存儲的格式和語法。針對MongoDB的操作都使用JSON風格語法,客戶端提交或接收的數據都使用JSON形式來展現。相對於SQL來說,更加直觀,容易理解和掌握。這也是根據我自己項目的情況出發,最後選擇了mongodb的一個原因。
2、Schema-less,支持嵌入子文檔:MongoDB是一個Schema-free的文檔資料庫。一個資料庫可以有多個Collection,每個Collection是Documents的集合。Collection和Document和傳統資料庫的Table和Row並不對等。無需事先定義Collection,隨時可以創建。Collection中可以包含具有不同schema的文檔記錄。 這意味著,你上一條記錄中的文檔有3個屬性,而下一條記錄的文檔可以有10個屬性,屬性的類型既可以是基本的數據類型(如數字、字元串、日期等),也可以是數組或者散列,甚至還可以是一個子文檔(embed document)。這樣,可以實現逆規范化(denormalizing)的數據模型,提高查詢的速度。
3、簡單易用的查詢方式:直接使用JSON,支持范圍查詢、正則表達式查詢。
4、CRUD更加簡單,支持in-place update:只要定義一個數組,然後傳遞給MongoDB的insert/update方法就可自動插入或更新;對於更新模式,MongoDB支持一個upsert選項,即:「如果記錄存在那麼更新,否則插入」。MongoDB的update方法還支持Modifier,通過Modifier可實現在服務端即時更新,省去客戶端和服務端的通訊。這些modifer可以讓MongoDB具有和Redis、Memcached等KV類似的功能:較之MySQL,MonoDB更加簡單快速。Modifier也是MongoDB可以作為對用戶行為跟蹤的容器。在實際中使用Modifier來將用戶的交互行為快速保存到MongoDB中以便後期進行統計分析和個性化定製
5、所有的屬性類型都支持索引,甚至數組:這可以讓某些任務實現起來非常的輕松。在MongoDB中,「_id」屬性是主鍵,默認MongoDB會對_id創建一個唯一索引。
6、性能高效,速度快: MongoDB使用c++/boost編寫,在多數場合,其查詢速度對比MySQL要快的多,對於CPU佔用非常小。部署也很簡單,對大多數系統,只需下載後二進制包解壓就可以直接運行,幾乎是零配置。
7、服務端腳本和Map/Rece:MongoDB允許在服務端執行腳本,可以用Javascript編寫某個函數,直接在服務端執行,也可以把函數的定義存儲在服務端,下次直接調用即可。MongoDB不支持事務級別的鎖定,對於某些需要自定義的「原子性」操作,可以使用Server side腳本來實現,此時整個MongoDB處於鎖定狀態。Map/Rece也是MongoDB中比較吸引人的特性。Map/Rece可以對大數據量的表進行統計、分類、合並的工作,完成原先SQL的GroupBy等聚合函數的功能。並且Mapper和Recer的定義都是用Javascript來定義服務端腳本。
㈢ mysql怎麼查一個資料庫下有哪些表
mysql怎麼查一個資料庫下有哪些表
show tables即為顯示當前資料庫中所有的表。又如:
mysql> use mysql
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_ic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
28 rows in set (0.05 sec)
這個是顯示「mysql」這個資料庫中的所有的表,一共有28張。
mysql怎麼檢視資料庫有哪些表
show databases;--先檢視有哪些資料庫
use 資料庫名;--指定某個資料庫
show tables;--檢視這個資料庫的全部表格
sybase 檢視資料庫下有哪些表
你好
你可以用客戶端工具如sybase central 檢視
或者通過查詢系統表sysobjects來檢視
語法
1
select * from sysobjects
怎樣檢視mysql里有哪些資料庫
mysql -u使用者名稱 -p密碼 登陸之後,用show databases命令即可檢視到mysql裡面有哪些資料庫。
mysql 資料庫表關系有哪些
關系型資料庫表與表之間的三種關系 一、一對一關系:
定義:有兩個表,在第一個表中的某一行只與第二個表中的一行相關,同時第二個表中的某一行,也只與第一個表中的一行相關,我們稱這兩個表為一對一關系。
二、一對多關系:
定義:有多張表,第一個表中的行可以與第二個表中的一到多個行相關聯,但是第二個表中的一行只能與第一個表中的一行相關聯。
三、多對多關系:
定義:有兩個表,第一個表的一行可以與第二個表中的一到多個行相關聯,同時,第二個表中的一行可以與第一個表中的一到多個行相關聯
mysql怎麼把一個資料庫的表復制到另外一個資料庫
mysqlmp -u 使用者名稱 -p -database 資料庫名 > D:abc.sql
mysql -u 使用者名稱 -p --database 資料庫名 < D:abc.sql
輸入命令以後才會提示你輸入密碼的,輸入命令的時候不需要輸入密碼.
mysql 資料庫服務有哪些?
增刪改查(insert delete update select)
mysql資料庫查詢某個表有哪些欄位
SHOW COLUMNS FROM 表
這個命令就可以查詢出具體有哪些欄位了
mongodb查詢資料庫有哪些表
db.foo.find(...).count()
db.foo.find(...).limit(n) 根據條件查詢資料並返回指定記錄數
db.foo.find(...).skip(n)
db.foo.find(...).sort(...) 查詢排序
db.foo.findOne([query]) 根據條件查詢只查詢一條資料
db.foo.getDB() get DB object associated with collection 返回表所屬的庫
db.foo.getIndexes() 顯示表的所有索引
db.foo.group( { key : ..., initial: ..., rece : ...[, cond: ...] } ) 根據條件分組
db.foo.mapRece( mapFunction , receFunction , <optional params> )
db.foo.remove(query) 根據條件刪除資料
db.foo.renameCollection( newName ) renames the collection 重命名表
db.foo.save(obj) 儲存資料
db.foo.stats() 查看錶的狀態
db.foo.storageSize() - includes free space allocated to this collection 查詢分配到表空間大小
db.foo.totalIndexSize() - size in bytes of all the indexes 查詢所有索引的大小
db.foo.totalSize() - storage allocated for all data and indexes 查詢表的總大小
db.foo.update(query, object[, upsert_bool]) 根據條件更新資料
db.foo.validate() - SLOW 驗證表的詳細資訊
db.foo.getShardVersion() - only for use with sharding
檢視sqlserver資料庫有哪些表
--查詢資料庫里所有表名和欄位名的語句
--SQL 查詢所有表名:
SELECT NAME FROM SYSOBJECTS WHERE TYPE='U'
SELECT * FROM INFORMATION_SCHEMA.TABLES
--查詢表的所有欄位名:
SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID(' 表名' )
SELECT * FROM INFORMATION_SCHEMA.TABLES
SELECT * FROM INFORMATION_SCHEMA.VIEWS
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
---------以下為其他資料庫查詢表----------
--ORACLE 檢視所有表名:
SELECT TABLE_NAME FROM USER_TABLES
--ACCESS 檢視所有表名:
SELECT NAME FROM MSYSOBJECTS WHERE TYPE=1 AND FLAGS=0
--MSYSOBJECTS 是系統物件,預設情況是隱藏的。通過工具、選項、檢視、顯示、系統物件可以使之顯示出來。