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

阿里RDS MySQL Windows客户端本地批量导入 load data local infile 及null值的处理。

原创 aisql 2023-01-13
1351

首先检查RDS参数

SHOW GLOBAL VARIABLES LIKE 'local_infile';

1673602379447.png

local_infile必须为ON

阿里参数设置的默认就是ON。如果不为ON。去RDS控制台更改参数
1673602465183.png

然后创建一个测试表

CREATE TABLE `test20` ( `id` int(11) DEFAULT NULL, `ss` varchar(5) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

在Windows本地建一个txt文档用于导入
image.png

在Windows客户端命令行登陆MySQL 一定得带上参数 --local-infile=1

mysql.exe --host=HOST --port=3306 --user=dba --password=abc123 --local-infile=1

在命令行执行导入命令

load data local infile "D:\\ExecScriptTest\\data.txt" into table cgtest.test20 fields terminated by ',';

image.png

再去查看数据库表数据
image.png

数据已完全导入。


另外 load data 不支持直接导入null
举例:表结构如下

CREATE TABLE `test21` ( `col1` int(11) DEFAULT NULL, `col2` varchar(20) DEFAULT NULL, `col3` datetime DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

导入文件如下:
image.png

执行导入并查看警告
image.png

查看现在表中数据
image.png
可以看到。我txt文件中没有填入的字段。int,varhcar,datetime的表现是不一样的

int字段给我自动填的0
varchar字段自动填的’’
datetime字段自动填的’0000-00-00 00:00:00’
如果我想要 int字段与 datetime字段 我没有填的行。自动为null该怎么实现呢?
用如下语句

load data local infile "D:\\ExecScriptTest\\data1.txt" into table cgtest.test21 fields terminated by ',' (@col1,col2,@col3) set col1 = nullif(@col1,'') , col3 = nullif(@col3,'');

再查看 数据库内容
image.png

实现了null值的填充。

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

评论