-
1 # 小小猿愛嘻嘻
-
2 # 樂圖軟體
這樣做是不是有點麻煩啊?這種類似的資料管理操作,我們基本上不再用程式碼了,也不用資料庫了,其實有個很簡單的方法,輕鬆搞定了,而且即使不是專業的程式設計師也是可以做到的。(送免費工具,詳見文末)
直接用EXCEL整合資料庫大家都是使用雲表企業應用平臺,實現EXCEL資料的管理,匯入匯出,資料分析,多使用者操作,使用者許可權管理,流程審批等,都用這個軟體就搞定了,比寫程式碼更快還好用。集成了mysql,支援SQL和OR資料庫。
雲表,本身是一個基於EXCEL的軟體開發平臺,但是不同的是,完全不用程式設計,只需要像EXCEL一樣畫表格,寫中文公式,配置流程許可權,就好了。很簡單,操作和學習沒有難度。所以能簡單的工作,就沒有必須搞那麼複雜。
用畫表格的方式,製作ERP我們常見的軟體,OA,ERP,WMS等都可以輕鬆製作出來。
而且另外一個你想不到功能,雲表可以自動生成APP
0程式碼生成手機APP只要你在電腦端把要用的功能設計好了,就可以透過很簡單配置,自動生成手機APP,直接可以在手機上實現移動辦公。
與其他軟體也能整合雲表做的軟體,可以雲端也可以本地部署,也就是說網路和內網都可以使用。如果你還要與第三方軟體,比如用友,SAP整合,那也沒有問題,自帶openAPI也可以直接連線資料庫,所以很方便。
2.透過如下連結下載 https://www.toutiao.com/a1633568409080836
-
3 # o鬍子先生o
這個問題蠻複雜的,我之前處理過類似的問題,首先要看你說的匯入是什麼概念,sqlserver的操作介面有直接匯入的功能,其他資料庫不清楚,這種就是把資料直接塞進資料庫,但是Python得server包不一定支援這個功能。我之前的做法是把excel 資料讀取之後放到列表裡面,然後在編輯sql 查詢語言直接插資料到資料庫,需要用到value 關鍵字,資料庫是server08,05版的不支援value。這種方法效率不高一次最多插入1000行資料,需要編輯迴圈多次插入,這種方法好處就是比較靈活,可以選擇性插入想要的資料。其他資料庫應該可以用類似的方法。包用的是pypysqlserver這個包編輯更簡單。
-
4 # IT老友
提主沒有說匯入到哪個sql資料庫,我這裡就以匯入sqlite3為例。
主要分為2步:1,讀取xls檔案的資料 ; 2,寫入sql資料庫
以下excel原始檔截圖
import xlrd
import sqlite3
file = "H:\\xls\\全國省市縣列表.xls"
data = xlrd.open_workbook(file)
table = data.sheets()[0] #第一個sheets
datalist=[]
for i in range(1,table.nrows): #總行數
datalist.append(tuple(table.row_values(i)))
conn = sqlite3.connect("d:\\database\\country.db") #資料庫檔案的路徑
cursor = conn.cursor()
cursor.execute("create table country(province varchar(20),num int,town varchar(30),town varchar(30))") ##建立表
sql = "insert into country(province,num,city,town) values(?,?,?,?)"
cursor.executemany(sql,datalist) #插入資料
conn.commit() #提交資料到資料庫
conn.close() #關閉連線
print("匯入完成")
匯入不同的資料庫有不同的模組,比如mysql使用pymysql模組,具體根據你的需求來。
-
5 # 海洋與森林
向來主張拿來主義,下面只是mysql的一個實現,自動由excel的表頭構建表,能看懂的,自己拿去。
#######################################
#/usr/bin/env python3
# -*- coding:utf-8 -*-
import os
import sys
import getopt
import openpyxl
import pymysql
import datetime
import re
import itertools
#資料庫連線配置檔案
__db_config = {
"host":"127.0.0.1",
"port":3306,
"user":"your.db.username",
"password":"your.db.password",
"db":"xls",
"charset":"utf8"
}
####################
def usage():
print( "xls2db.py usage:" )
print( " xls2db filename(xlsx)" )
print( " version: 1.0.1" )
print( " by sun" )
exit(1)
#主函式執行
if __name__ == "__main__":
if len(sys.argv) != 2:
usage()
fname = sys.argv[1]
if not os.path.exists(fname):
print("file not exist:", fname)
exit(2)
#建立連結
connection = pymysql.connect(**__db_config)
print("loadfile:", fname)
wb = openpyxl.load_workbook(fname)
for shname in wb.get_sheet_names():
ws = wb.get_sheet_by_name(shname)
#過濾空表
if ws.max_row <= 1:
break
#構建建表SQL
sql = "DROP TABLE IF EXISTS `xls`.`%s`;\n" % (shname)
sql += "CREATE TABLE `xls`.`%s` (\n `indx` INT NOT NULL AUTO_INCREMENT,\n" % (shname)
#構建表的結構
for col in ws.iter_cols(max_row=2):
if not isinstance(col[0].value, str):
break;
if col[1].is_date:
sql += " `%s` DATETIME NULL DEFAULT NULL, \n" % (col[0].value)
else:
sql += " `%s` VARCHAR(64) NULL DEFAULT NULL,\n" % (col[0].value)
sql += " PRIMARY KEY (`indx`) \n) DEFAULT CHARACTER SET = utf8;\n"
with connection.cursor() as cursor:
row_count = cursor.execute( sql );
print("create table:", shname)
#構建自增主鍵
indx = itertools.count(1,1)
#構建插入語句
sql = "INSERT IGNORE INTO `xls`.`%s` " % (shname)
for row in ws.iter_rows(min_row=2):
insql = sql \
+ "VALUES (%s, " % next(indx) \
+ ", ".join([""%s"" % "".join(filter(lambda x: x not in(""\""), str(var.value))) for var in row]) \
+ ")\n"
with connection.cursor() as cursor:
row_count = cursor.execute( insql );
connection.commit()
print("insert table(%s), items(%s)" % (shname, next(indx)))
#關閉資料鏈接
connection.close()
-
6 # 藍爵調
1、用pandas庫讀取excel ,pandas.read_excel()
2、用pandas.DataFrame.to_sql()存入資料庫
搞定
-
7 # 碼上程功
1, 資料例子:
2, 基於Python3的指令碼:
import pandasimport pymysqlpymysql.install_as_MySQLdb()from sqlalchemy import create_engine#cnx = create_engine("mysql+mysqldb://{{username}}:{{password}}@{{hostname}}:{{ip}}/{{dbname}}", echo=False)cnx = create_engine("mysql+mysqldb://root:[email protected]:3306/mysql", echo=False)df = pandas.read_excel(open("D:/temp/Book1.xlsx","rb"), sheetname="Sheet1")df.to_sql(name="table_name", con=cnx, if_exists="append", index=False)3, 如果是其他資料庫型別,如oracle或者postgresql.需要改動連線引擎:
from sqlalchemy import create_engine
engine = create_engine("postgresql://scott:tiger@localhost:5432/mydatabase")
engine = create_engine("mysql+mysqldb://scott:tiger@localhost/foo")
engine = create_engine("oracle://scott:[email protected]:1521/sidname")
engine = create_engine("mssql+pyodbc://mydsn")
# sqlite://<nohostname>/<path>
# where <path> is relative:
engine = create_engine("sqlite:///foo.db")
# or absolute, starting with a slash:
engine = create_engine("sqlite:////absolute/path/to/foo.db")
回覆列表
這個實現起來很簡單,就兩步,先讀取excel檔案單元格的值,然後插入SQL資料庫中。下面我介紹一下如何從excel檔案讀取資料,並插入到mysql資料庫中,主要用到openpyxl和pymysql這兩個包,實驗環境win7+python3.6+pycharm5.0+mysql5.5,主要步驟如下:
1.下載安裝openpyxl和pymysql這兩個包,這裡直接pip install+包名安裝就行,如下圖所示,我的環境都已經安裝:
2.為了方便演示,我這裡新建了一個test資料表,主要有id,university,和name這三個欄位,如下圖:
接著新建了一個test.xlsx檔案,主要是把這個excel中的資料插入到test資料表中,樣本資料如下:
3.資料準備完畢後,我們就可以讀取excel資料了,主要程式碼如下,也就是一個讀取函式,很簡單,不到十行程式碼:
4.從excel檔案中讀取完資料後,我們就可以往mysql資料庫中插入了,如下圖所示,也就是一個插入函式,程式碼很簡單,十來行程式碼左右:
程式執行結果如下,已經成功將excel讀取的資料插入到mysql資料庫中:
至此,一個完整的從excel檔案讀取資料並插入到mysql資料庫的過程便完畢。就整個過程來看,其實不難,就是從excel讀資料,然後插入到SQL資料庫中,只要你熟悉xlrd,openpylx,pynysql等這些常用包,很快就能完成資料的讀和寫,這裡需要注意的是,有一些特殊字元需要進行轉義才能插入資料庫,像"""等,我這裡就不做過多介紹,網上也有很多這方面的教程,你可以參考學習一下,對你的提升也有很大的幫助,希望以上分享的內容能對你有所幫助吧。