在Linux中批量excel数据导入Mysql数据库

本文介绍了如何通过Python脚本将Excel文件转换为CSV格式,并使用shell脚本批量导入到MySQL数据库,包括创建两个shell脚本,一个负责单条数据导入,另一个负责文件夹中所有CSV文件的批量导入过程。
摘要由CSDN通过智能技术生成

运维基础数据导入

1.整理基础数据在本地

2.通过python脚本将excel批量转成csv格式

import os
import pandas as pd

def toCSV(inFilePath,outFilePath):
    read_file = pd.read_excel (inFilePath,sheet_name = 0) 
    read_file.to_csv (outFilePath, 
                    index = None,
                    header=True)


def walkFile():
    #fileList = []
    #dirList = []
    for root, _ , files in os.walk(import_path):
        # root 表示当前正在访问的文件夹路径
        # dirs 表示该文件夹下的子目录名list
        # files 表示该文件夹下的文件list
        # 遍历文件
        for f in files:
            inFilePath = os.path.join(root, f)
            fname,_ = os.path.splitext(f)
            outFilePath = os.path.join(export_path, fname + ".csv")
            print(outFilePath)
            toCSV(inFilePath,outFilePath)
            #fileList.append(file)
        # # 遍历所有的文件夹
        # for d in dirs:
        #     folder = os.path.join(root, d)
        #     dirList.append(folder)
    # return fileList, dirList

import_path = "./import_path"
export_path = "./export_path"

walkFile()

3.创建两个shell脚本一个负责向DB导入数据,一个负责批量导入

负责向DB导入数据
#!/bin/bash
mysql --local-infile  -h 连接地址 -uroot -proot<<EOF
  use import_data;
  LOAD DATA LOCAL INFILE '$1'
	INTO TABLE data
	FIELDS TERMINATED BY ','
	ENCLOSED BY '"'
	LINES TERMINATED BY '\r\n'
	IGNORE 1 ROWS
	(@col1,@col2,@col3,@col4,@col5,@col6,@col7,@col8,@col9,@col10,@col11,@col12,@col13,@col14,@col15,@col16,@col17,@col18,@col19,@col20,@col21,@col22,@col23,@col24,@col25,@col26,@col27,@col28,@col29,@col30,@col31,@col32,@col33,@col34,@col35,@col36,@col37,@col38,@col39,@col40,@col41,@col42,@col43,@col44,@col45,@col46,@col47,@col48)
	SET record_key = @col1,field1=@col23,field2=@col16,field3=@col25,field4=@col28,field5=@col5;
EOF
exit;
负责批量导入
#!/bin/sh

starttime=`date +'%Y-%m-%d %H:%M:%S'` #记录开始时间

echo "开始时间:$starttime";

echo "正在遍历文件夹";

traverse_directory() {
        for file in $1/*; do
          # 检查文件是否存在
          if [[ -f $file ]]; then
                echo "文件:$file"
				sh ./import_csv.sh $file
          fi
        done
}

traverse_directory $1

endtime=`date +'%Y-%m-%d %H:%M:%S'`

start_seconds=$(date --date="$starttime" +%s);

end_seconds=$(date --date="$endtime" +%s);

echo "本次运行时间:"$((end_seconds - start_seconds))"s";

echo "结束时间:$endtime";
  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

二进制诗人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值