반응형
Excel에서 sqlite 데이터베이스로 데이터 내보내기
데이터가 가득한 엑셀 시트를 가지고 있습니다.나는 sqlite 데이터베이스 테이블에 동일한 데이터를 원합니다.현재 저는 수동으로 하나씩 필드를 입력해야 합니다.데이터를 sqlite 데이터베이스 테이블로 내보내는 방법이 있습니까?
이 새로운 코드 exceltosql을 사용해 보십시오.
'''
This code uses the openpyxl package for playing around with excel using Python code
to convert complete excel workbook (all sheets) to an SQLite database
The code assumes that the first row of every sheet is the column name
Every sheet is stored in a separate table
The sheet name is assigned as the table name for every sheet
'''
import sqlite3
import openpyxl
from openpyxl import load_workbook
import re
def slugify(text, lower=1):
if lower == 1:
text = text.strip().lower()
text = re.sub(r'[^\w _-]+', '', text)
text = re.sub(r'[- ]+', '_', text)
return text
#Replace with a database name
con = sqlite3.connect('test.db')
#replace with the complete path to youe excel workbook
wb = load_workbook(filename=r'abc.xlsx')
sheets = wb.get_sheet_names()
for sheet in sheets:
ws = wb[sheet]
columns= []
query = 'CREATE TABLE ' + str(slugify(sheet)) + '(ID INTEGER PRIMARY KEY AUTOINCREMENT'
for row in ws.rows[0]:
query += ', ' + slugify(row.value) + ' TEXT'
columns.append(slugify(row.value))
query += ');'
con.execute(query)
tup = []
for i, rows in enumerate(ws):
tuprow = []
if i == 0:
continue
for row in rows:
tuprow.append(unicode(row.value).strip()) if unicode(row.value).strip() != 'None' else tuprow.append('')
tup.append(tuple(tuprow))
insQuery1 = 'INSERT INTO ' + str(slugify(sheet)) + '('
insQuery2 = ''
for col in columns:
insQuery1 += col + ', '
insQuery2 += '?, '
insQuery1 = insQuery1[:-2] + ') VALUES('
insQuery2 = insQuery2[:-2] + ')'
insQuery = insQuery1 + insQuery2
con.executemany(insQuery, tup)
con.commit()
con.close()
언급URL : https://stackoverflow.com/questions/17439885/export-data-from-excel-to-sqlite-database
반응형
'programing' 카테고리의 다른 글
이클립스에서 프로젝트 탐색기 창을 표시하는 방법은 무엇입니까? (0) | 2023.04.26 |
---|---|
GitHub 리포지토리에서 변경한 내용으로 로컬 리포지토리 업데이트 (0) | 2023.04.26 |
경기 전후의 Grep 문자? (0) | 2023.04.26 |
하루 중 시간이 아닌 시간 지속 시간으로 작업 (0) | 2023.04.26 |
WPF 데이터 그리드 행을 두 번 클릭 이벤트를 프로그래밍 방식으로 (0) | 2023.04.26 |