相关推荐recommended
【MySQL】将 CSV文件快速导入 MySQL 中
作者:mmseoamin日期:2023-12-25

【MySQL】将 CSV文件快速导入 MySQL 中

  • 方法一:使用navicat等软件的导入向导
    • 如果出现中文乱码
    • 方法二:命令行导入(LOAD DATA INFILE SQL)

      一般来说,将csv文件导入mysql数据库有两种办法:

      1. 使用 navicat、workbench 等软件中的导入向导手动导入;

      2. 使用 load data infile 命令导入

        前者速度较慢,适合数据量比较小的时候,而对于大文件,我们需要使用命令行导入。

      方法一:使用navicat等软件的导入向导

      1. 打开安装好的Navicat Premium,连接数据库。

      成功连接后如下图:

      【MySQL】将 CSV文件快速导入 MySQL 中,在这里插入图片描述,第1张

      1. 创建数据库

      【MySQL】将 CSV文件快速导入 MySQL 中,在这里插入图片描述,第2张

      1. 点击“方向导入”

      【MySQL】将 CSV文件快速导入 MySQL 中,在这里插入图片描述,第3张

      1. 选择需要导入的文件类型

      【MySQL】将 CSV文件快速导入 MySQL 中,在这里插入图片描述,第4张

      1. 选择需要导入文件的路径

      【MySQL】将 CSV文件快速导入 MySQL 中,在这里插入图片描述,第5张

      1. 查看导入的表结构是否正确

      【MySQL】将 CSV文件快速导入 MySQL 中,在这里插入图片描述,第6张

      1. 导入成功

      【MySQL】将 CSV文件快速导入 MySQL 中,在这里插入图片描述,第7张

      如果出现中文乱码

      解决方案:

      • 将原来存储在桌面上的 OrderData 文件通过 Notepad++ 进行转码,格式为 UTF-8 点击OrderDaTa.csv, 右键用 Notepad++ 打开,修改编码。

        【MySQL】将 CSV文件快速导入 MySQL 中,在这里插入图片描述,第8张

        • 重新导入数据

          【MySQL】将 CSV文件快速导入 MySQL 中,在这里插入图片描述,第9张

          • 点击开始按钮,数据导入中…

            【MySQL】将 CSV文件快速导入 MySQL 中,在这里插入图片描述,第10张

            方法二:命令行导入(LOAD DATA INFILE SQL)

            准备工作

            • 在mysql中将表结构先建好,包括字段名及类型等

              假设你的 CSV 文件包含图书信息,分为 ISBN、Title、Author 和 ListPrice 字段。要创建这样一个表,你需要执行这样的命令。

              CREATE TABLE BooksCSV (
                  ISBN VARCHAR(255) NULL,
                  title VARCHAR(255) NULL,
                  author VARCHAR(255) NULL,
                  ListPrice VARCHAR(255) NULL
              );
              

              两个建议:

              1. 建议所有的字段都接纳 NULL 值,并且表没有主键,因为事先并不知道 CSV 文件中的数据是否完整和规范。

              2. 即使是数字数据,也只使用 VARCHAR 字段,以防止文件中的数据格式不正确而导致处理错误。导入数据后,可以直接在数据库中进行清理,读取表的数,并进行必要的验证和修正。

              • 使用如下命令查看是否允许从外部路径导入文件
                show variables like '%secure%';
                

                如果结果显示secure_file_priv=‘’,即空字符串,则无需改动;如果secure_file_priv=null,则需要在mysql的配置文件my.ini中添加如下行secure_file_priv=‘’,之后重启mysql服务。

                • 使用如下命令查看是否允许本地导入
                  show variables like 'local_infile';
                  

                  如果结果是off,则改使用如下命令改为on

                  set global local_infile=on;
                  
                  • 导入文件

                    使用如下命令导入文件。注意:文件路径不能有中文!!

                    load data local infile 'file_path' # 文件路径
                    into table daily_price             # 表名
                    character set utf8                 # 编码
                    fields terminated by ','           # 分隔符
                    lines terminated by '\r\n'         # 换行符,windows下是\r\n
                    ignore 1 lines;                    # 忽略第一行,因为表头已建好
                    

                    其他有关load data infile的细节可在此地址查询

                    https://www.mysqlzh.com/doc/126/255.html