暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【数据库-通用方法】如何快速创建几百列的宽表,并快速写入数据

原创 %Lucky 2023-03-31
263
【需求】我们要创建一个320个列的表,用来验证宽表的查询性能

1、快速创建几百列宽表的方法

(1)首先创建一个小表,我们暂且叫它A表,如20列;
(2)将A表多次复制成另一个B表,改变列名即可;
操作演示,已初始表为2列,最后转换为320列的方法

Create Table `student` (
 `a` int DEFAULT NULL,
 `b` int DEFAULT NULL)
Create Table `student2` (
 `a` int DEFAULT NULL,
 `b` int DEFAULT NULL,
 `a1` int DEFAULT NULL,
 `b1` int DEFAULT NULL,
 `a2` int DEFAULT NULL,
 `b2` int DEFAULT NULL,
 `a3` int DEFAULT NULL,
 `b3` int DEFAULT NULL,
 `a4` int DEFAULT NULL,
 `b4` int DEFAULT NULL,
........................按照此方法直接复制粘贴改即可
)

2、快速处理要写入的数据方法

(1)首先向student表中插入2行数据;
(2)用导出数据的方法将student表中的数据导入到一个csv文件中,示例方法如:

SELECT * FROM student INTO OUTFILE '/syw_test/TPCH-tools/student.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

或者

mysql -h<IP地址> -u<用户名> -p<密码> -P<端口> <库名> -e "select * from <表名>" -s |sed -e  "s/\t/,/g" -e "s/NULL/  /g" -e "s/\n/\r\n/g"  > /syw_test/TPCH-tools/student.csv(存储导出文件的路径)

(3)将导出的数据文件student.csv进行复制一次作数据合并时的备用,复制后的文件命名为student1.csv;

cp student.csv ./student2.csv

(4)用paste方法将导出的数据文件student.csv与student1.csv进行合并,这样由原来的2列数据就变成了4列,经过多次合并,就有了满足自己列宽的数据;

paste -d "," student.csv student2.csv >student_01.csv

参数说明:

<1> -d:表示数据合并时要用,(逗号)隔开。若你说csv文件合并直接按照上面的实例写即可;
<2> >student_01.csv:表示将两个文件合并后的内容写入到新文件student_01.csv中

3、导入数据到表中

根据自己的数据库特性,选择特定的方式导入数据即可,如下是符合MySQL协议的数据导入示例

(1)使用load data…

load data local infile '/syw_test/TPCH-tools/student.csv' into table student fields terminated by ',' lines terminated by '\n'; 

(2)使用外表minio的方式均可,详细的内容可在网上搜索找一下

最后修改时间:2023-03-31 12:03:23
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论