vlambda博客
学习文章列表

mysql批量导入excel、csv、txt文件-自动脚本


如果你经常做数据分析,频繁需要将别人给的数据导入到数据库,就知道很费时间,有很多痛点。

为此,我写了个脚本,能多够一键导入,速度超快。

下面为视频介绍(B站搜索:nigo81)

Replay Share Like

0/0

进度条,百分之0
00:00
/
28:54
28:54
全屏

继续观看

mysql批量导入excel、csv、txt文件-自动脚本

Original
,
mysql批量导入excel、csv、txt文件-自动脚本
逆行的狗

如何安装

克隆本项目:

git clone https://github.com/nigo81/import-csv-to-mysql.git

csv2mysql文件添加可执行权限:

chmod +x csv2mysql

csv2mysql复制到~/.local/bin:

cp csv2mysql ~/.local/bin

你需要安装fzf搜索工具,因为脚本里调用它来选择文件。

如何使用

进入你csv文件所在目录,然后执行csv2mysql

你可以使用fzf的搜索功能,按下tab键可以选中文件。

选择完成后,按下回车确认。


    ~/tmp  csv2mysql
input some database parameters

Enter your host ip,(default is 127.0.0.1)🔗:
Enter your database name 📚:book
Enter your account name 🥷:root
Enter password 🔑:\n
table name 📑:vip
do your wan't to drop table if exists? 0:don't drop, 1:drop  :1
data ignore lines num,usually as 0 or 1:1
input character set(default is utf8):

你需要填写mysql数据库的一些信息,如ip,数据库名称,账号,密码。

你需要在table name处输入你将导入的数据保存的表的名称,如果数据库中没有该表,会自动创建。

vim脚本

如果你熟悉vim,我也写了个vim脚本。

" SQL建表 可以将一行表头转换为导入语句
vnoremap <F12> :call Mysql()<CR>
func! Mysql() range
let line = getline('.')
let l = line('.')
let start = l
let word_list = split(line,',')
let output = ["
create table <++> ("]
let i =0
for word in word_list
    let word = substitute(word,'^"
','','')
    let word = substitute(word,'
"$','','')
    let word = "
`" . word . "`"
    let i=i+1
    if i == len(word_list)
        call add(output,word . "
 varchar(255)")
    else
        call add(output,word . "
 varchar(255),")

    endif
    let l = l+1
endfor
call add(output,"
);")
call append(start,output)
let l = l+3
call setline(l ,"
")
call setline(l+1 ,"
load data infile <++>")
call setline(l+2,"
into table <++>")
call setline(l+3,"
character set 'utf8'")
call setline(l+4,"
fields terminated by '<++>' optionally enclosed by <++>")
call setline(l+5,"
lines terminated by '<++>' ignore 1 lines;")
"
return line
endfunc

可视模式下选中表头行,按下F12键,就可以自动生成建表语句和导入语句。