mysql 语句LOAD DATA INFILE高效导入数据

mysql LOAD DATA INFILE使用官方地址

https://dev.mysql.com/doc/refman/5.7/en/load-data.html

LOAD DATA

[LOW_PRIORITY | CONCURRENT] [LOCAL]

INFILE ‘file_name’

[REPLACE | IGNORE]

INTO TABLE tbl_name

[PARTITION (partition_name [, partition_name] …)]

[CHARACTER SET charset_name]

[{FIELDS | COLUMNS}

[TERMINATED BY ‘string’]

[[OPTIONALLY] ENCLOSED BY ‘char’]

[ESCAPED BY ‘char’]

]

[LINES

[STARTING 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}] …]

load data infile语句从一个文本/文件中以很高的速度写入表中。

读取位于服务器上的文本文件时,文件必须处于数据库目录或可被所有人读取

你指定关键词low_priority,那么MySQL将会等到没有其他人读这个表的时候,才把插入数据

指定local关键词,则表明从客户主机读文件。如果local没指定,文件必须位于服务器上

eplace和ignore关键词控制对现有的唯一键记录的重复的处理

fields关键字指定了文件记段的分割格式

terminated by分隔符:意思是以什么字符作为分隔符

enclosed by字段括起字符

escaped by转义字符

terminated by描述字段的分隔符,默认情况下是tab字符()

enclosed by描述的是字段的括起字符。

escaped by描述的转义字符。默认的是反斜杠(backslash: )

1、win系统导入

批处理文件 import.bat 路径为d:/files/bat

@ECHO OFF

/*dbhost执行文件不在本服务器需要,本次忽略*/

@SET dbhost=主机名(例如:127.0.0.1)

/*数据库账号名称*/

@SET dbuser=***

/*数据库密码*/

@SET dbpasswd=****

@SET sqlpath=%~dp0

//需要执行的sql语句

@set sqlfile=demo.sql

/*未配置环境变量时加下下面两句*/

@set MySQL_HOME=C:MySQL5.7.26@set PATH=%MySQL_HOME%bin;%PATH%

/*连接MySQL数据库并执行sql脚本 注意database为写入数据库名*/

@mysql -u%dbuser% -p%dbpasswd% database < %sqlpath%%sqlfile%

sq文件 demo.sql 路径为d:/files/bat

/*D:filessimple.csv文件路径 ,table为写入数据表名,uname, phone数据库字段名称*/

LOAD DATA LOCAL INFILE ‘D:filessimple.csv’ INTO TABLE table FIELDS TERMINATED BY ‘,’ ENCLOSED BY ‘”‘ LINES TERMINATED BY ‘r’ IGNORE 1 LINES (uname, phone);

/*退出*/

quit

simple.csv

php执行批处理

$shell = “d: && cd d:/files/bat && import.bat”;system($shell,$status);

if( $status ){

echo “执行失败”;

} else {

echo “执行成功”;

}

注意如果system执行失败

编辑php.ini查找 disable_functions 将等号后面的 system 去掉即可。其他人自行查资料

注意导入前开启mysql local_infile

开启local_infile

2、linux系统导入

linux导入比较简单:

注意 ***处填写数据库账号,****处填写数据库密码

table为写入数据表名,uname, phone数据库字段名

批处理文件 import.sh 路径为d:/files/bat

#!/bin/bash

mysql -u*** -p**** <<EOF use zsj_datas; LOAD DATA LOCAL INFILE '/d/files/simple.csv' INTO TABLE table FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY 'r' IGNORE 1 LINES (uname, phone);EOF

php执行批处理

$shell = ” cd /d/files/bat && sh ./ import.sh”;

system($shell,$status);

if( $status ){

echo “执行失败”;

} else {

echo “执行成功”;

}

注意如果system执行失败

编辑php.ini查找 disable_functions 将等号后面的 system 去掉即可。其他错误自行查资料

注意导入前开启mysql local_infile

开启local_infile

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年6月25日
下一篇 2022年6月25日

相关推荐

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息