mysql 導入大批量excel數據


excel轉換為csv格式

通過excel保存的時候選擇為csv格式即可

創建數據庫以及表格

CREATE DATABASE 數據庫名;

/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`myemployees` /*!40100 DEFAULT CHARACTER SET gb2312 */;

USE `item`;

/*Table structure for table `departments` */

DROP TABLE IF EXISTS `stock_rate`;


CREATE TABLE `stock_rate` (
  `名稱` varchar(20) ,
  `類型` varchar(20) ,
  `終端售價價格帶` varchar(200),
  `SP碼`varchar(200) ,
  PRIMARY KEY (`SP碼`) 
#其實不用SP碼作為主鍵
) ENGINE=InnoDB AUTO_INCREMENT=271 DEFAULT CHARSET=gb2312;


/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

load local 數據涉及到的問題

在開始執行之前一定要先去看一下在dos中是否可以執行mysql -u root -p命令,確認無誤以后以下代碼在終端完成執行
接着執行
mysql -u root --local-infile=1 -p

use item;
load data local infile 'D:\0422\stock_rate.csv' into table stock_rate
CHARACTER SET utf8 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(名稱, 類型, 終端售價價格帶, SP碼);

https://www.zhihu.com/question/426972214

導入數據

use item;
load data infile 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\stock_source.csv' into table stock_source
CHARACTER SET utf8 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(sp碼,spname, 倉庫, 城市, 方艙出庫量,方艙入庫數據詳情,方艙庫存量,wms出庫總數量,wms入庫數據詳情,wms庫存量,wms庫存成本,方艙在途數量,wms在途數量);

創建表格

uSE `item`;

/*Table structure for table `departments` */

DROP TABLE IF EXISTS `stock_source`;


CREATE TABLE `stock_source` (
  `sp碼` varchar(200),
  `spname` varchar(200),
  `倉庫` varchar(20),
  `城市` varchar(20),
  `方艙出庫量` int default 0,
  `方艙入庫數據詳情` varchar(20),
  `方艙庫存量` int,
  `wms出庫總數量` int default 0,
  `wms入庫數據詳情` varchar(200),
  `wms庫存量` int default 0,
  `wms庫存成本` float default 0,
  `方艙在途數量` int default 0,
  `wms在途數量` int default 0
) ENGINE=InnoDB AUTO_INCREMENT=271 DEFAULT CHARSET=gb2312;


/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

數據源:

CREATE TABLE `249_price` (
  `名稱` varchar(200) ,
  `類型` varchar(200) ,
  `標品庫名稱` varchar(200),
  `SP碼` varchar(200) ,
  `成本` float default 0 not null
--   PRIMARY KEY (`SP碼`) 
) ENGINE=InnoDB AUTO_INCREMENT=271 DEFAULT CHARSET=gb2312;

load data infile 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\stock_new.csv' into table stock
CHARACTER SET utf8 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(sp碼,spname,倉庫,城市,方艙出庫量,wms出庫總數量,wms庫存量,wms庫存成本,wms在途數量);

CREATE TABLE `stock` (
  `sp碼` varchar(200) ,
  `spname` varchar(200) ,
  `倉庫` varchar(200),
  `城市` varchar(200) ,
  `方艙出庫量` int default 0 not null,
  `wms出庫總數量` int default 0 not null,
  `wms庫存量` int default 0 not null,
  `wms庫存成本` float default 0 not null,
  `wms在途數量` int default 0 not null
--   PRIMARY KEY (`SP碼`) 
) ENGINE=InnoDB AUTO_INCREMENT=271 DEFAULT CHARSET=gb2312;


from openpyxl import load_workbook
wb = load_workbook("stock4.xlsx")
current_sheet = wb['各前置倉單品周轉']
# 創建第一張表:各前置倉單品周轉
# current_sheet['A1'] = 'sp碼'
# current_sheet['B1'] = 'spname'
# current_sheet['C1'] = '倉庫'
# current_sheet['D1'] = '城市'
# current_sheet['E1'] = '前30天銷售'
# current_sheet['F1'] = '庫存周轉天數'
# current_sheet['G1'] = '分類'
# wb.save(filename="stock2.xlsx")
source_sheet = wb['庫存']
for j in range(1, 5):
    for i in range(2, source_sheet.max_row+1):
        current_sheet.cell(row=i, column=j).value = source_sheet.cell(row=i, column=j).value
for i in range(2, current_sheet.max_row+1):
    current_sheet[f'E{i}'] = f'=sumifs("C:\Users\xujin\PycharmProjects\pythonProject2\[sales.xlsx]Sheet1!"$F:$F,"C:\Users\xujin\PycharmProjects\pythonProject2\[sales.xlsx]Sheet1!"$E:$E,A{i},"C:\Users\xujin\PycharmProjects\pythonProject2\[sales.xlsx]Sheet1!"$I:$I,C{i})'

    
wb.save(filename="stock6.xlsx")


from openpyxl import load_workbook
wb = load_workbook("stock.xlsx")
current_sheet = wb.create_sheet('各前置倉單品周轉', 0)
current_sheet = wb['各前置倉單品周轉']
# 創建第一張表:各前置倉單品周轉
current_sheet['A1'] = 'sp碼'
current_sheet['B1'] = 'spname'
current_sheet['C1'] = '倉庫'
current_sheet['D1'] = '城市'
current_sheet['E1'] = '前置倉庫存量'
current_sheet['F1'] = '前30天銷售'
current_sheet['G1'] = '庫存周轉天數'
current_sheet['H1'] = '分類'
source_sheet = wb['庫存']

list0 = [1, 2, 3, 4, 10]
for i in range(2, source_sheet.max_row+1):
    for k, j in enumerate(list0):
        current_sheet.cell(row=i, column=k+1).value = source_sheet.cell(row=i, column=j).value
for i in range(2, current_sheet.max_row+1):
    current_sheet[f'F{i}'] = f"=SUMIFS('C:\\Users\\xujin\\PycharmProjects\\pythonProject2\\[sales.xlsx]Sheet1'!$G:$G,'C:\\Users\\xujin\\PycharmProjects\\pythonProject2\\[sales.xlsx]Sheet1'!$F:$F,A{i},'C:\\Users\\xujin\PycharmProjects\\pythonProject2\\[sales.xlsx]Sheet1'!$L:$L,C{i})"
    current_sheet[f'G{i}'] = f'=IFERROR(IF(E{i}>0,E{i}/(0{i}/30),0),"有庫存無銷售")'
wb.save(filename="stock1.xlsx")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM