Skip to content
Snippets Groups Projects
Unverified Commit 253773b5 authored by prinz's avatar prinz Committed by GitHub
Browse files

tanslate installMO/ssb-test/mysql-compatibility/create-database/prima… (#4042)

parent e6d155d7
No related branches found
No related tags found
No related merge requests found
Showing
with 65 additions and 488 deletions
# **完成NYC测试**
**NYC Taxi(纽约出租车)** 数据集收集了纽约市数十亿出租车行程的详细信息,包括接送日期/时间、接送地点、行程距离、详细票价、费率、支付类型和乘客数量。
通过本教程,您将了解如何使用MatrixOne来完成对NYC Taxi数据集的查询。
该数据集的详细信息以及下载教程可参见:
* [https://github.com/toddwschneider/nyc-taxi-data](https://github.com/toddwschneider/nyc-taxi-data)
* [http://tech.marksblogg.com/billion-nyc-taxi-rides-redshift.html](http://tech.marksblogg.com/billion-nyc-taxi-rides-redshift.html).
## **准备工作**
确保你已经安装了[单机版MatrixOne](../install-standalone-matrixone.md)[连接到MatrixOne服务](../connect-to-matrixone-server.md).
## **1. 下载并导入数据**
本节教程参考[https://github.com/toddwschneider/nyc-taxi-data](https://github.com/toddwschneider/nyc-taxi-data),您可以从此处了解关于数据集下载和导入的详细信息。
该数据集共有17亿行数据,占用450 GB的空间,请确保有足够的空间来存放数据。
* <font size=4>**安装PostgreSQL与PostGIS**</font>
在Mac上,两者均可通过[Homebrew](https://brew.sh)安装。
* <font size=4>**下载原始数据**</font>
```
./download_raw_data.sh && ./remove_bad_rows.sh
```
`remove_bad_rows.sh`脚本修复了两个特定的文件,其中数据极少但是列字段很多。
* <font size=4>**初始化数据库**</font>
```
./initialize_database.sh
```
* <font size=4>**导入数据**</font>
```
./import_trip_data.sh
./import_fhv_trip_data.sh
```
* <font size=4>**可选操作:下载并导入2014年Uber数据**</font>
FiveThirtyEight Uber数据集包含了2014年4月至9月的Uber出行记录。Uber和其他FHV (Lyft、Juno、Via等)的数据自2015年1月以来就被存储在TLC中。
```
./download_raw_2014_uber_data.sh
./import_2014_uber_trip_data.sh
```
## **2. 从PostgreSQL导出数据**
```
COPY
(
SELECT trips.id,
trips.vendor_id,
trips.pickup_datetime,
trips.dropoff_datetime,
trips.store_and_fwd_flag,
trips.rate_code_id,
trips.pickup_longitude,
trips.pickup_latitude,
trips.dropoff_longitude,
trips.dropoff_latitude,
trips.passenger_count,
trips.trip_distance,
trips.fare_amount,
trips.extra,
trips.mta_tax,
trips.tip_amount,
trips.tolls_amount,
trips.ehail_fee,
trips.improvement_surcharge,
trips.total_amount,
trips.payment_type,
trips.trip_type,
trips.pickup_location_id,
trips.dropoff_location_id,
cab_types.type cab_type,
weather.precipitation rain,
weather.snow_depth,
weather.snowfall,
weather.max_temperature max_temp,
weather.min_temperature min_temp,
weather.average_wind_speed wind,
pick_up.gid pickup_nyct2010_gid,
pick_up.ctlabel pickup_ctlabel,
pick_up.borocode pickup_borocode,
pick_up.boroname pickup_boroname,
pick_up.ct2010 pickup_ct2010,
pick_up.boroct2010 pickup_boroct2010,
pick_up.cdeligibil pickup_cdeligibil,
pick_up.ntacode pickup_ntacode,
pick_up.ntaname pickup_ntaname,
pick_up.puma pickup_puma,
drop_off.gid dropoff_nyct2010_gid,
drop_off.ctlabel dropoff_ctlabel,
drop_off.borocode dropoff_borocode,
drop_off.boroname dropoff_boroname,
drop_off.ct2010 dropoff_ct2010,
drop_off.boroct2010 dropoff_boroct2010,
drop_off.cdeligibil dropoff_cdeligibil,
drop_off.ntacode dropoff_ntacode,
drop_off.ntaname dropoff_ntaname,
drop_off.puma dropoff_puma
FROM trips
LEFT JOIN cab_types
ON trips.cab_type_id = cab_types.id
LEFT JOIN central_park_weather_observations weather
ON weather.date = trips.pickup_datetime::date
LEFT JOIN nyct2010 pick_up
ON pick_up.gid = trips.pickup_nyct2010_gid
LEFT JOIN nyct2010 drop_off
ON drop_off.gid = trips.dropoff_nyct2010_gid
) TO '/matrixone/export_data/trips.tsv';
```
## **3. 在MatrixOne中建表**
```
CREATE TABLE trips
(
trip_id int unsigned,
vendor_id varchar(64),
pickup_datetime bigint unsigned,
dropoff_datetime bigint unsigned,
store_and_fwd_flag char(1),
rate_code_id smallint unsigned,
pickup_longitude double,
pickup_latitude double,
dropoff_longitude double,
dropoff_latitude double,
passenger_count smallint unsigned,
trip_distance double,
distance bigint,
fare_amount float,
extra float,
mta_tax float,
tip_amount float,
tolls_amount float,
ehail_fee float,
improvement_surcharge float,
total_amount float,
payment_type varchar(64),
trip_type smallint unsigned,
pickup varchar(64),
dropoff varchar(64),
cab_type varchar(64),
precipitation float,
snow_depth float,
snowfall float,
max_temperature smallint,
min_temperature smallint,
average_wind_speed float,
pickup_nyct2010_gid smallint unsigned,
pickup_ctlabel varchar(64),
pickup_borocode smallint unsigned,
pickup_boroname varchar(64),
pickup_ct2010 varchar(64),
pickup_boroct2010 varchar(64),
pickup_cdeligibil char(1),
pickup_ntacode varchar(64),
pickup_ntaname varchar(64),
pickup_puma varchar(64),
dropoff_nyct2010_gid smallint unsigned,
dropoff_ctlabel varchar(64),
dropoff_borocode smallint unsigned,
dropoff_boroname varchar(64),
dropoff_ct2010 varchar(64),
dropoff_boroct2010 varchar(64),
dropoff_cdeligibil varchar(64),
dropoff_ntacode varchar(64),
dropoff_ntaname varchar(64),
dropoff_puma varchar(64)
) ;
```
## **4. 向表中插入数据**
```
load data infile '/matrixone/export_data/trips.tsv ' into table trips
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
```
然后便可以使用MatrixOne中的查询语句来查询表中数据。
## **5. Run Queries**
```
# Q1
SELECT cab_type, count(*) FROM trips GROUP BY cab_type;
# Q2
SELECT passenger_count, avg(total_amount) FROM trips GROUP BY passenger_count;
# Q3
SELECT passenger_count, year(pickup_datetime) as year, count(*) FROM trips GROUP BY passenger_count, year;
# Q4
SELECT passenger_count, year(pickup_datetime) as year, round(trip_distance) AS distance, count(*) as count
FROM trips
GROUP BY passenger_count, year, distance
ORDER BY year,count DESC;
```
...@@ -26,6 +26,12 @@ $ ./dbgen -s 1 -T s ...@@ -26,6 +26,12 @@ $ ./dbgen -s 1 -T s
$ ./dbgen -s 1 -T d $ ./dbgen -s 1 -T d
``` ```
我们还准备了 1GB 的数据集供你下载。你可以在下面链接中直接获取数据文件:
```
https://community-shared-data-1308875761.cos.ap-beijing.myqcloud.com/lineorder_flat.tar.bz2
```
## **3. 在MatrixOne中建表** ## **3. 在MatrixOne中建表**
``` ```
...@@ -154,12 +160,6 @@ CREATE TABLE lineorder_flat( ...@@ -154,12 +160,6 @@ CREATE TABLE lineorder_flat(
## **4. 导入数据** ## **4. 导入数据**
`system_vars_config.toml`参数增大,例如10GB,然后重新启动MatrixOne服务。
```
max-entry-bytes = "10GB"
```
使用如下命令将数据导入相关表: 使用如下命令将数据导入相关表:
``` ```
......
# **安装单机版 MatrixOne** # **安装单机版 MatrixOne**
作为一款开源数据库,MatrixOne 目前支持主流的 Linux 和 MacOS 系统。你可以直接从[源代码](#使用源代码搭建)搭建单机版本的 MatrixOne,也可以使用[Docker](#使用docker)安装部署。 作为一款开源数据库,MatrixOne 目前支持主流的 Linux 和 MacOS 系统。你可以通过以下三种方法安装单机版 MatrixOne:
- [方法 1:使用源代码搭建](#方法 1:使用源代码搭建)
- [方法 2:下载二进制包](#方法 2:下载二进制包)
- [方法 3:使用 Docker](方法 3:使用 Docker)
推荐硬件规格:x86 CPU;4核;32GB 内存,支持 CentOS 7+ 操作系统。
## **方法 1:使用源代码搭建** ## **方法 1:使用源代码搭建**
...@@ -29,6 +35,7 @@ $ cd matrixone ...@@ -29,6 +35,7 @@ $ cd matrixone
``` ```
$ git clone https://github.com/matrixorigin/matrixone.git $ git clone https://github.com/matrixorigin/matrixone.git
$ git checkout 0.5.0
$ cd matrixone $ cd matrixone
``` ```
...@@ -97,10 +104,18 @@ $ docker --version ...@@ -97,10 +104,18 @@ $ docker --version
#### 2. 创建并运行容器 #### 2. 创建并运行容器
使用以下命令将从 Docker Hub 中拉取最近的 MatrixOne 镜像: 使用以下命令将从 Docker Hub 中拉取 MatrixOne 镜像,你可以选择最新的镜像,或稳定版本的镜像。
- 最新版本的镜像:
```
$ docker run -d -p 6001:6001 --name matrixone matrixorigin/matrixone:latest
```
- 0.5.0 稳定版本的镜像
``` ```
$ docker run -d -p 6001:6001 --名称 matrixone matrixorigin/matrixone:latest $ docker run -d -p 6001:6001 --name matrixone matrixorigin/matrixone:0.5.0
``` ```
运行 Docker Hub 时需要输入用户名和密码,获取用户名和密码可以参考下一步骤 - 连接 MatrixOne 服务 运行 Docker Hub 时需要输入用户名和密码,获取用户名和密码可以参考下一步骤 - 连接 MatrixOne 服务
......
# **NYC性能测试结果**
## **概述**
在MatrixOne v0.2.0版本,我们在单机上遵照[相关流程](../Get-Started/Tutorial/NYC-test-with-matrixone.md)实现了**纽约出租车数据测试**,并将测试结果与其他产品相比较,体现了MatrixOne在查询处理时间上的优异性。
!!! note <font size=4>说明</font>
<font size=3>以下测试结果根据 MatrixOne v0.2.0 版本测试得出,均取三次最好结果的平均值,以秒为单位。</font>
## **单机测试**
!!! info 测试配置
测试所用服务器配置如下:
AMD EPYC™ Rome CPU 2.6GHz/3.3GHz,16核,32GiB内存。
| 查询编号 | MatrixOne 0.2.0 | ClickHouse v21.11.4.14 | Starrocks v1.19.3<br>(仅有3000万行独立数据)
| :----: | :----: | :----: |:----:
| Q1 | 8.37|5.99 |2.58
| Q2 | 2.67|4.13 |2.18
| Q3 | 3.48|4.56 |3.43
| Q4 | 5.34|7.09 |4.19
| 总和| 19.86|21.77|12.38
![柱状图](https://github.com/matrixorigin/artwork/blob/main/docs/overview/NYC_standalone.png?raw=true)
## **限制**
在测试中对MatrixOne v0.2.0的查询语句进行了一些限制:
* 不使用 `WHERE`过滤语句
* 暂不支持表分区,因此不使用`PARTITION`相关命令
## **相关信息**
本节内容展示了使用MatrixOne进行纽约出租车数据测试的结果。若想获取更多相关信息,请见:
* [完成SSB测试](../Get-Started/Tutorial/SSB-test-with-matrixone.md)
* [SSB测试报告](SSB-Test-Performance.md)
# **SSB测试性能报告**
## **概述**
在此,我们给出了使用MatrixOne在不同的硬件和查询条件下进行SSB测试的性能结果。
可参见[完成SSB测试](../Get-Started/Tutorial/SSB-test-with-matrixone.md)来复现整个测试结果,如果未能实现类似结果,可能需要检查硬件、负载或或测试流程是否存在问题,可以在GitHub上提出[issue](https://github.com/matrixorigin/matrixone/issues/new/choose)来报告具体问题。
在v0.2.0中,MatrixOne在单表、多表查询方面均有优异的表现,我们将MatrixOne的性能测试结果与其他数据库产品进行了比较。通过柱状图,可以看出MatrixOne在查询处理时间上有明显的优势。
推荐测试使用的服务器规格型号:x86 CPU,16核,64GB内存,CentOS 7+操作系统。
!!! note <font size=4>说明</font>
<font size=3>以下测试结果根据 MatrixOne v0.2.0 版本测试得出,均取三次最好结果的平均值,以秒为单位</font>
为了展示单表查询能力,将五张表合成为一张宽表:`lineorder_flat`
## **单机单表**
使用单机搭载MatrixOne执行对宽表`lineorder_flat`的查询,并与相同配置下的其他数据库进行比较。
`lineorder_flat`共有6亿行数据,共占据220 GB空间。
!!! info 测试配置
测试所用服务器配置如下:
AMD EPYC™ Rome CPU 2.6GHz/3.3GHz,16核,32GiB内存。
| 查询编号 | MatrixOne v0.2.0 | ClickHouse v21.11.4.14
| :----: | :----: | :----:
| Q2 | 2.71 |3.82
| Q3.1 | 4.23|5.01
| Q3.2 | 11.05|21.34
| Q4.1 | 2.94|3.1
| Q4.2 | 4.27|5.32
| Q4.3 | 16.91|26.32
| 总和 | 42.11|64.91
![柱状图](https://github.com/matrixorigin/artwork/blob/main/docs/overview/SSB_standalone_single.png?raw=true)
## **单机多表**
仍然使用单机环境,现对原始SSB测试数据集中的多个数据表进行查询,数据共有6亿行,主表占据67GB空间。
| 查询编号 | MatrixOne v0.2.0 | ClickHouse v21.11.4.14| Starrocks v1.19.3
| :----: | :----: | :----: |:----:
| Q2 | 13.6|28.05 |15.83
| Q3.1 | 12.94|27.81 |16.98
| Q3.2 | 23.56|54.84 |29.25
| Q4.1 | 13.96|27.2 |16.77
| Q4.2 | 19.72|41.82|21.54
| Q4.3 | 46.07|85.99|35.95
| 总和 | 129.85|265.71|136.37
![柱状图](https://github.com/matrixorigin/artwork/blob/main/docs/overview/SSB_standalone_multi.png?raw=true)
## **集群多表**
使用由三个节点组成的集群进行多表查询,其中每一个节点都按照单机进行安装部署。由测试结果可知,集群的查询时间明显短于单机查询,证明了MatrixOne的总体性能随着集群中节点个数增加而提高。
| 查询编号 | MatrixOne v0.2.0 | Starrocks v1.19.3
| :----: | :----: | :----:
| Q2 | 4.94 |6.08
| Q3.1 | 5.85|6.27
| Q3.2 | 9.67|9.79
| Q4.1 | 6.05|6.87
| Q4.2 | 6.87|9.51
| Q4.3 | 20.1|15.55
| 总和 | 53.48|54.07
![柱状图](https://github.com/matrixorigin/artwork/blob/main/docs/overview/SSB_cluster_multi.png?raw=true)
## **限制**
MatrixOne v0.2.0并没有完成所有SSB查询语句,原因如下:
* 不使用包含`WHERE`过滤语句的查询命令
* 暂不支持表分区,因此不使用`PARTITION`相关命令
## **相关信息**
本节内容展示了使用MatrixOne进行SSB测试的结果。若想获取更多相关信息,请见:
* [完成NYC测试](../Get-Started/Tutorial/NYC-test-with-matrixone.md)
* [NYC测试结果](NYC-Test-Performance.md)
...@@ -6,7 +6,7 @@ MatrixOne的SQL语法兼容了MySQL 8.0.23版本。 ...@@ -6,7 +6,7 @@ MatrixOne的SQL语法兼容了MySQL 8.0.23版本。
| ---- | ---- | ---- | | ---- | ---- | ---- |
| DDL | CREATE DATABASE | 不支持中文命名的表名 | | DDL | CREATE DATABASE | 不支持中文命名的表名 |
| | | 支持部分拉丁语 | | | | 支持部分拉丁语 |
| | | CHARSET, COLLATE, ENCRYPTION 目前可以使用但无法生效 | | | | `CHARSET``COLLATE``ENCRYPTION` 目前可以使用但无法生效 |
| | CREATE TABLE | 不支持临时表 | | | CREATE TABLE | 不支持临时表 |
| | | 不支持表的分区 | | | | 不支持表的分区 |
| | | 不支持 `Create table .. as` 语句 | | | | 不支持 `Create table .. as` 语句 |
......
...@@ -34,4 +34,5 @@ ...@@ -34,4 +34,5 @@
## **限制** ## **限制**
目前只支持 `UTF-8` 字符集。 - 目前只支持 `UTF-8` 字符集。
\ No newline at end of file - `CHARACTER SET``COLLATE``ENCRYPTION` 目前可以使用但无法生效
# **CREATE INDEX**
## **语法说明**
`CREATE INDEX` 语句为已有表`table_name`的某列添加新索引。
## **语法结构**
```
> CREATE INDEX index_name ON table_name (column_name)
```
## **示例**
```
> CREATE INDEX PIndex ON Persons (LastName);
```
## **限制**
目前索引只能应用于单列。此外,还不支持指定索引类型,`UNIQUE/FULLTEXT` 语句还不支持。
\ No newline at end of file
# **DROP INDEX**
## **语法说明**
`DROP INDEX` 从表`table_name` 中删除名为`index_name`的索引。
## **语法结构**
```
> DROP INDEX index_name ON table_name;
```
## **示例**
```
> DROP INDEX PIndex ON Persons;
```
\ No newline at end of file
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
`PRIMARY KEY` 即主键约束,用于唯一标示表中的每条数据。 `PRIMARY KEY` 即主键约束,用于唯一标示表中的每条数据。
主键必须包含 `UNIQUE` 值,不能包含 `NULL` 值。 主键必须包含 `UNIQUE` 值,不能包含 `NULL` 值。
一个表只能有一个主键,但一个主键可以包含一个或多个列。 一个表只能有一个主键,但一个主键可以包含一个列。
## **在建表时创建主键** ## **在建表时创建主键**
...@@ -20,21 +20,10 @@ ...@@ -20,21 +20,10 @@
); );
``` ```
若要对主键进行命名,并指定多个列为主键,可参考如下语句:
```
> CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CONSTRAINT PK_Person PRIMARY KEY (ID,LastName)
);
```
!!! Note 注意区分 !!! Note 注意区分
上述示例中只有一个主键 `PK_Person`, 但其中包含了两列(`ID``LastName` 上述示例中只有一个主键 `PK_Person`, 但其中包含了两列(`ID``LastName`
## **限制** ## **限制**
目前不支持 `DROP PRIMARY KEY` 语句。 - 目前不支持 带有 `ALTER TABLE``DROP PRIMARY KEY` 语句。
\ No newline at end of file - 不支持复合主键(即由多个列组成的主键,为复合主键)
...@@ -24,3 +24,7 @@ ...@@ -24,3 +24,7 @@
| 123 | abc | | 123 | abc |
+------+---------+ +------+---------+
``` ```
## **限制**
目前不支持 `INSERT INTO…VALUES(function)` 语法中的内置函数。
...@@ -8,12 +8,8 @@ ...@@ -8,12 +8,8 @@
``` ```
> LOAD DATA > LOAD DATA
[LOW_PRIORITY | CONCURRENT] [LOCAL]
INFILE 'file_name' INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name INTO TABLE tbl_name
[PARTITION (partition_name [, partition_name] ...)]
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS} [{FIELDS | COLUMNS}
[TERMINATED BY 'string'] [TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char'] [[OPTIONALLY] ENCLOSED BY 'char']
...@@ -23,11 +19,6 @@ ...@@ -23,11 +19,6 @@
[STARTING BY 'string'] [STARTING BY 'string']
[TERMINATED BY 'string'] [TERMINATED BY 'string']
] ]
[IGNORE number {LINES | ROWS}]
[(col_name_or_user_var
[, col_name_or_user_var] ...)]
[SET col_name={expr | DEFAULT}
[, col_name={expr | DEFAULT}] ...]
``` ```
* `TERMINATED BY``ENCLOSED BY`等分隔符的意义与`SELECT INTO`一致。 * `TERMINATED BY``ENCLOSED BY`等分隔符的意义与`SELECT INTO`一致。
...@@ -42,3 +33,7 @@ ...@@ -42,3 +33,7 @@
```sql ```sql
> LOAD DATA INFILE '/ssb-dbgen-path/lineorder_flat.tbl ' INTO TABLE lineorder_flat; > LOAD DATA INFILE '/ssb-dbgen-path/lineorder_flat.tbl ' INTO TABLE lineorder_flat;
``` ```
## **限制**
当前仅支持 `csv` 格式的文件。
...@@ -24,6 +24,8 @@ ...@@ -24,6 +24,8 @@
* 数值类型向字符CHAR类型转换 * 数值类型向字符CHAR类型转换
* 格式为数值的字符类型向数值类型转换(负数需要转换为SIGNED) * 格式为数值的字符类型向数值类型转换(负数需要转换为SIGNED)
详细的数据类型转换规则,请参见[数据类型转换](../../../../Data-Types/data-type-conversion.md)
## **示例** ## **示例**
```sql ```sql
......
...@@ -7,69 +7,20 @@ ...@@ -7,69 +7,20 @@
## **语法结构** ## **语法结构**
``` sql ``` sql
> SELECT SELECT
[ALL | DISTINCT ] [ALL | DISTINCT ]
select_expr [[AS] alias], ... select_expr [, select_expr] [[AS] alias] ...
[INTO variable [, ...]] [INTO variable [, ...]]
[FROM table_references [FROM table_references
[WHERE expr] [WHERE where_condition]
[GROUP BY {{col_name | expr | position}, ... [GROUP BY {col_name | expr | position}
| extended_grouping_expr}] [ASC | DESC]]
[HAVING expr] [HAVING where_condition]
[ORDER BY {col_name | expr} [ASC | DESC], ...] [ORDER BY {col_name | expr | position}
[LIMIT row_count] [ASC | DESC]]
[OFFSET row_count] [LIMIT {[offset,] row_count | row_count OFFSET offset}]
]
``` ```
### **SELECT INTO**
`SELECT INTO` 语句将查询结果存储在变量或者导出为文件。
* SELECT ... INTO ***var_list*** 可以检索列值并将其存储到变量中。
* SELECT ... INTO OUTFILE 将检索结果输出为文件,可以使用行/列分隔符来生成特定的格式。
``` sql
> SELECT <expr_list>
INTO OUTFILE 'file_name'
[{FIELDS}
[TERMINATED BY 'char']
[ENCLOSED BY 'char']
]
[LINES
[TERMINATED BY 'string']
]
[HEADER 'bool']
[MAX_FILE_SIZE long]
[FORCE_QUOTE {'col1','col2',...}]
```
#### 参数释义
* `<expr_list>` 是你想输出的检索结果,为必选参数。
* `'file_name'` 为本机上你所导出的文件的文件名,以绝对路径。若存在同名文件,则会导致导出失败。此外,路径中的所有前置文件夹都必须事先创建,该命令不会自动创建所需要的文件夹。
* `TERMINATED BY` 被用来指定字段分隔符,默认值为逗号 `,`
* `ENCLOSED BY` 指定了列字段包括符,默认为双引号 `"`
* `LINES TERMINATED BY` 表示行结束符,默认为换行符 `\n`
* `HEADER` 用于设置文件中是否包含每一列名称的标题行,当为`TRUE`时,输出包含标题行,反之则不包含。
* 你可以通过`MAX_FILE_SIZE`限制输出文件的大小(以KB为单位)。
例如,当`MAX_FILE_SIZE`=5242880(5GB)时,10GB的表就会被导出为两个文件,文件命名规则为原文件名后缀加上`.序号`。若不设置该值,那么默认输出一个文件。
* `FORCE_QUOTE`强制对每个指定列中所有非NULL值使用引用,使用双引号作为标识。
* `NULL` 值将被导出为`\N`
* `HAVING` 指定组的条件,通常与 `GROUP BY` 从句一起使用。查询的结果是只包含满足 `HAVING` 条件的组。(如果没有 `GROUP BY`,则所有行自动组成单个聚合组。)
`HAVING` 从句与 `WHERE` 从句一样,指定选择条件。 但 `WHERE` 从句指定选择列表中的列的条件,但是无法引用聚合函数。即 `WHERE` 用于过滤数据行,而 `HAVING` 用于过滤分组。
`HAVING` 必须只引用 `GROUP BY` 从句中的列或聚合函数中使用的列。
如果 `HAVING` 从句指定的是不明确的列,则会出现警告。
!!! info 建议
如果不设置`MAX_FILE_SIZE`,当表的数据量很大时会输出一个极大的文件,可能因此发生导出失败的情况;因此我们建议您根据实际情况设置该值。
#### 限制
* 相同目录下若存在同名文件,则会导致导出失败。
* 目前只支持导出 ***.csv*** 类型的文件。
* 目前只支持通过绝对路径将文件导出到服务器主机,而不能导出到远程客户端。
## **示例** ## **示例**
```sql ```sql
...@@ -85,19 +36,7 @@ ...@@ -85,19 +36,7 @@
> SELECT * FROM t1 WHERE spID>2 AND userID <2 || userID >=2 OR userID < 2 LIMIT 3; > SELECT * FROM t1 WHERE spID>2 AND userID <2 || userID >=2 OR userID < 2 LIMIT 3;
> SELECT userID,MAX(score) max_score FROM t1 WHERE userID <2 || userID > 3 GROUP BY userID ORDER BY max_score; > SELECT userID,MAX(score) max_score FROM t1 WHERE userID <2 || userID > 3 GROUP BY userID ORDER BY max_score;
```
```sql
select * from t1 into outfile '/Users/tmp/test.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
header 'TRUE'
MAX_FILE_SIZE 9223372036854775807
FORCE_QUOTE (a, b)
```
```sql
> create table t1 (spID int,userID int,score smallint); > create table t1 (spID int,userID int,score smallint);
> insert into t1 values (1,1,1); > insert into t1 values (1,1,1);
> insert into t1 values (2,2,2); > insert into t1 values (2,2,2);
...@@ -115,3 +54,9 @@ FORCE_QUOTE (a, b) ...@@ -115,3 +54,9 @@ FORCE_QUOTE (a, b)
> select userID,count(score) from t1 where userID>2 group by userID having count(score)>1 order by userID; > select userID,count(score) from t1 where userID>2 group by userID having count(score)>1 order by userID;
Empty set (0.01 sec)s Empty set (0.01 sec)s
``` ```
## **限制**
-`GROUP BY` 中暂不支持表别名.
- 暂不支持 `SELECT...FOR UPDATE`
- 部分支持 `INTO OUTFILE`
...@@ -6,7 +6,7 @@ MatrixOne SQL syntax conforms with MySQL 8.0.23 version. ...@@ -6,7 +6,7 @@ MatrixOne SQL syntax conforms with MySQL 8.0.23 version.
| ---- | ---- | ---- | | ---- | ---- | ---- |
| DDL | CREATE DATABASE | A database with Chinese name is not supported. | | DDL | CREATE DATABASE | A database with Chinese name is not supported. |
| | | Names with Latins support limitedly. | | | | Names with Latins support limitedly. |
| | | CHARSET, COLLATE, ENCRYPTION can be used but don't work. | | | | `CHARSET`, `COLLATE`, `ENCRYPTION` can be used but don't work. |
| | CREATE TABLE | Temporary tables are not supported. | | | CREATE TABLE | Temporary tables are not supported. |
| | | Partition tables are not supported. | | | | Partition tables are not supported. |
| | | Create table .. as clause is not supported now. | | | | Create table .. as clause is not supported now. |
......
...@@ -34,4 +34,5 @@ Create a database. ...@@ -34,4 +34,5 @@ Create a database.
## **Constraints** ## **Constraints**
Only `UTF-8` CHARACTER SET is supported for now. - Only `UTF-8` CHARACTER SET is supported for now.
- `CHARACTER SET`, `COLLATE`, `ENCRYPTION` can be used but don't work.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment