mysql导入表格,txt操作(以及常见问题解决方法)

在现实生活中,我们可能需要往数据库中插入大量数据。
这时候我们可以直接将表格导入到数据库中。

示例1.导入txt

原始数据

第一步:创建表

CREATE TABLE IF NOT EXISTS POWER(
	useshuju INT(50)	
);
DESC POWER;
SELECT * FROM POWER;

第二步:插入

语法
LOAD DATA LOCAL INFILE ‘文件路径’
INTO TABLE 表名
CHARACTER SET utf8
FIELDS TERMINATED BY ‘,’
LINES TERMINATED BY ‘\r\n’
IGNORE 1 LINES;#忽略表头,即表头不插入

LOAD DATA LOCAL INFILE 'C:\\Users\\Shineion\\Desktop\\shuju.txt' 
INTO TABLE POWER
CHARACTER SET utf8
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;

说明下:

1.文件路径\或者/。路径问题,注意windows 下\和linux 下/的区别。
2.必须加local,如果不加,写成这样LOAD DATA INFILE,可能会出现错误
找不到文件。
fields terminated by ‘,’    ------字段间以,号分隔
optionally enclosed by ‘"’  ------字段用"号括起
escaped by ‘"’       ------字段中使用的转义符为"
lines terminated by ‘\r\n’ ------行以\r\n结束
(字段1,字段2,字段3);#字段可以不写,如果写即表示数据库的表和本地的表不是一一对应,数据库的表字段多余本地表。

第三步:查询

SELECT * FROM POWER;

示例2,导入csv

由于表格很多时候是gbk编码.
我们需要转换成utf8编码.

现在是这样处理的:
第一步,用Excel创建文件,另存为 .csv 格式;
第二步,用记事本打开 CSV 文件,然后另存为 UTF-8 格式

将问题转换成txt文件导入。

得到的文件示意图。

代码

CREATE TABLE IF NOT EXISTS POWER(
	id INT(50),#序号
	va FLOAT(50),#values
	times DATETIME,#时间 time
	mins FLOAT(32),#minute
	hou FLOAT(32),#hour
	dom FLOAT(32)#dom
);
DESC POWER;
SELECT * FROM POWER;


LOAD DATA LOCAL INFILE 'C:\\Users\\Shineion\\Desktop\\chufang.txt' 
INTO TABLE POWER
CHARACTER SET utf8
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;

CHARACTER SET utf8:因为有中文数据,所以指定utf-8编码。

FIELDS TERMINATED BY ‘,’:csv文件以 ‘,’ 分隔数据。
.IGNORE 1 LINES:跳过原始文件中的第一行表头数据。如果不写,表头会被当作数据导入。如果要跳过从头开始的多行,可以改变LINES前面的数字。
可以在插入语句最后一列加上字段。 要导入数据的字段放在最后,将字段顺序和原始文件里的顺序保持一致。

常见问题

问题1:文件的绝对路径不能有中文,有中文运行结果显示
文件找不到。
File ‘C:\Users\Shineion\Desktop\数据.txt’ not found (Errcode: 2)

问题2:ERROR 1148 (42000): The used command is not allowed with this MySQL version
错误语句:mysql> LOAD DATA LOCAL INFILE ‘/var/lib/mysql/pet.txt’ INTO TABLE tbl_pet;
出错原因:多了一个LOCAL关键词。当文件在客户机端时要写LOCAL,在服务器端时不用写。我的txt文件是和MySQL数据库在同一虚拟机上的,所以不用加LOCAL。
问题3ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

出错原因:MySQL设置了secure-file-priv属性对应的路径,当数据文件从其他路径导入时便会报错。
解决办法:查看secure-file-priv指定路径并把数据文件放进去。

show variables like '%secure%';

问题4 ERROR 1292 (22007): Incorrect date value: ‘’ for column ‘death’ at row 1

出错原因:一开始直接把原始表格里的数据复制到txt文件里没有处理,空值的地方是空的,不符合MySQL里空值的表示方式,所以报错。

解决办法:将空值用\N代替。参考https://dev.mysql.com/doc/refman/8.0/en/loading-tables.html

问题5 使用 LOAD DATA INFILE ‘/var/lib/mysql-files/pet.txt’ INTO TABLE tbl_pet; 导入数据仍然失败

错误提示:’ for column ‘death’ at row 1 date value: 'N

出错原因:fields terminated by 默认值是’\t’,lines terminated by 默认值是’\n’,而Windows上的文件换行是’\r\n’,Mac OS X是’\r’。

解决办法:加上LINES TERMINATED BY ‘\r\n’,如下:

mysql> LOAD DATA INFILE ‘/var/lib/mysql-files/pet.txt’ INTO TABLE tbl_pet LINES TERMINATED BY ‘\r\n’;

本篇博客有借鉴https://blog.csdn.net/u013378642/article/details/81220809

在这里插入图片描述

电气工程的计算机萌新:余登武。写博文不容易。如果你觉得本文对你有用,请点个赞支持下,谢谢。
在这里插入图片描述

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于将Excel数据导入MySQL数据库导入向导,你可以按照以下步骤操作: 1. 首先,确保你已经安装了MySQL数据库,并且有相应的权限来导入数据。 2. 打开Excel文件,选择你要导入数据,并将其保存为CSV(逗号分隔值)格式。这将使数据文本的形式保存,以便在MySQL中进行导入。 3. 打开MySQL客户端,可以使用命令行工具如mysql或者图形化工具如phpMyAdmin。 4. 创建一个新的数据库或者选择你要将数据导入的现有数据库。 5. 在MySQL客户端中运行以下命令以创建一个新的表格来存储导入数据: ``` CREATE TABLE 表名 ( 列1 数据类型, 列2 数据类型, ... ); ``` 替换"表名"为你想要的表格名称,并根据你的需求定义列和数据类型。 6. 确保表格结构与CSV文件中的列匹配。如果需要,可以使用`ALTER TABLE`命令进行修改。 7. 使用以下命令将CSV文件导入MySQL表格中: ``` LOAD DATA INFILE '文件路径' INTO TABLE 表名 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 ROWS; ``` 替换"文件路径"为CSV文件的实际路径,"表名"为目标表格名称。如果你的CSV文件使用分隔符不是逗号或者有其他特殊需求,可以进行相应修改。 8. 导入完成后,你可以使用SQL查询语句来验证数据是否正确导入。 请注意,这个导入向导的步骤是一种常见的方法,具体操作可能会因你使用的MySQL版本和工具而有所不同。确保你已经熟悉你所使用的MySQL工具的文档和功能,以便正确导入数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

总裁余(余登武)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值