?一、需求背景
????????最近項(xiàng)目實(shí)踐過程中遇到了一個(gè)問題:在使用Navicat將數(shù)據(jù)導(dǎo)入到PostgreSQL數(shù)據(jù)庫時(shí),發(fā)現(xiàn)時(shí)間格式的字段中的時(shí)間數(shù)值發(fā)生了變化,導(dǎo)致部分?jǐn)?shù)據(jù)的時(shí)間不正確,故數(shù)據(jù)手動(dòng)導(dǎo)入數(shù)據(jù)庫報(bào)錯(cuò)。為了解決這個(gè)問題,決定編寫Python代碼來讀取Excel文件,并將數(shù)據(jù)逐行插入到目標(biāo)數(shù)據(jù)庫中,以確保時(shí)間數(shù)據(jù)的準(zhǔn)確性。
二、實(shí)踐流程
-
確保已安裝所需的Python庫(如
pandas
和psycopg2
),用于處理Excel文件和連接PostgreSQL數(shù)據(jù)庫。 -
準(zhǔn)備要導(dǎo)入的Excel文件,確保其中的時(shí)間字段格式正確,并且包含需要導(dǎo)入的數(shù)據(jù)。
-
編寫Python腳本來執(zhí)行數(shù)據(jù)導(dǎo)入操作。
三、代碼實(shí)踐
import psycopg2
import pandas as pd
# 連接數(shù)據(jù)庫
conn = psycopg2.connect(database='jiangyu_01', user='bigdata', password='postgres', host='192.168.22.168', port='1234')
cur = conn.cursor()
# 讀取Excel文件并更新數(shù)據(jù)庫中的數(shù)據(jù)
def synonym():
data_xls = pd.read_excel('new.xlsx', usecols=[0, 5], Sheetname='news') # 讀取Excel文件中的兩列數(shù)據(jù),Sheet名為'news'
print(len(data_xls))
for data in data_xls.values:
sql = """UPDATE public.jiaozheng_dataxx SET upload_time='{}' WHERE id={}""".format(data[1], data[0])
cur.execute(sql)
conn.commit()
def get_dataset():
# 讀取數(shù)據(jù)庫中的數(shù)據(jù)示例
conn = psycopg2.connect(database='sanyu_01', user='tatt', password='postgres', host='192.168.91.13', port='5432')
cur = conn.cursor()
cur.execute("SELECT * FROM public.jiaozheng_dingweixx LIMIT 1")
data = cur.fetchall()
print(data)
if __name__ == '__main__':
synonym() # 執(zhí)行更新操作
????????上述代碼是一個(gè)例子,實(shí)現(xiàn)了通過 psycopg2 庫連接到 PostgreSQL 數(shù)據(jù)庫,并讀取 Excel 文件中的數(shù)據(jù),并將其逐行更新到數(shù)據(jù)庫的指定表 jiaozheng_dataxx
中的 upload_time
字段。
????????代碼中的 synonym()
函數(shù)用于讀取 Excel 文件 'new.xlsx'
的 'news' Sheet 中的兩列數(shù)據(jù),并使用 SQL 更新語句將數(shù)據(jù)逐行更新到數(shù)據(jù)庫中。get_dataset()
函數(shù)用于演示從數(shù)據(jù)庫中讀取數(shù)據(jù)的方法。
? ? ? ? 你可以根據(jù)自己的需求,將數(shù)據(jù)庫連接參數(shù)、Excel 文件路徑、表名和字段名等信息進(jìn)行相應(yīng)的修改,以滿足你實(shí)際的數(shù)據(jù)庫和數(shù)據(jù)更新需求。同時(shí),你也可以根據(jù)需要添加異常處理、日志記錄等功能來完善代碼。文章來源:http://www.zghlxwxcb.cn/news/detail-574215.html
????????這樣就實(shí)現(xiàn)了讀取文件插入到數(shù)據(jù)庫的方式,暫時(shí)解決當(dāng)前使用Navicat工具手動(dòng)導(dǎo)入數(shù)據(jù)失敗的問題。文章來源地址http://www.zghlxwxcb.cn/news/detail-574215.html
到了這里,關(guān)于Python讀取excle文件,插入到數(shù)據(jù)庫的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!