Python读取excel指定列生成指定sql脚本的方法可以通过以下步骤实现:
- 安装依赖库
在 Python 环境下,我们需要安装 pandas 和 openpyxl 库。可以通过以下命令来安装:
pip install pandas openpyxl
- 读取excel文件
使用 pandas 库中的 read_excel 函数读取excel文件。例如,我们有一个名为sample.xlsx的excel文件,文件中包含三列数据:ID、Name 和 Salary。我们需要生成一个 SQL 脚本,生成语句格式为 INSERT INTO employees (ID, Name, Salary) VALUES (1, 'Tom', 50000)。
那么我们可以使用以下代码读取excel文件:
import pandas as pd
# 读取excel文件
df = pd.read_excel('sample.xlsx', usecols=['ID', 'Name', 'Salary'])
usecols参数指定我们只需要读取的列,可以直接在参数中指定,也可以传入一个列表,这里我们指定了三列:ID、Name 和Salary。
- 生成 SQL 脚本
我们可以遍历 DataFrame 中的每一行数据,并将每行数据转换成 SQL 语句进行拼接,最终得到一个完整的 SQL 脚本。
示例一:
假设我们的 excel 文件为 sample.xlsx,内容如下:
ID | Name | Salary |
---|---|---|
001 | Tom | 50000 |
002 | Jack | 60000 |
003 | Alice | 65000 |
我们需要生成如下 SQL 语句:
INSERT INTO employees (ID, Name, Salary) VALUES
('001', 'Tom', 50000),
('002', 'Jack', 60000),
('003', 'Alice', 65000);
我们可以使用以下代码实现:
import pandas as pd
# 读取excel文件
df = pd.read_excel('sample.xlsx', usecols=['ID', 'Name', 'Salary'])
# 生成SQL脚本
sql = 'INSERT INTO employees (ID, Name, Salary) VALUES\n'
for index, row in df.iterrows():
sql += f"('{row['ID']}', '{row['Name']}', {row['Salary']}),\n"
# 去除最后一个多余的逗号
sql = sql[:-2] + ';'
print(sql)
代码解释:
- 第 6 行,对 df 进行遍历,每次遍历把每一行转换为一个 SQL 语句。
- 第 7 行,使用 f-string 构造 SQL 语句,注意 Salary 需要保留数字类型。
- 第 9 行,由于最后一行不需要逗号,因此需要将字符串中的最后一个逗号去掉。
示例二:
假设我们的 excel 文件为 sample.xlsx,内容如下:
A | B | C | D | E |
---|---|---|---|---|
No | Name | Phone | Address | Age |
1 | Tom | 13812345678 | Beijing | 22 |
2 | Jack | 13987654321 | Shanghai | 25 |
3 | Alice | 13611112222 | Guangzhou | 18 |
我们需要生成如下 SQL 语句:
INSERT INTO users (Name, Age, Phone, Address) VALUES
('Tom', 22, '13812345678', 'Beijing'),
('Jack', 25, '13987654321', 'Shanghai'),
('Alice', 18, '13611112222', 'Guangzhou');
我们可以使用以下代码实现:
import pandas as pd
# 读取excel文件
df = pd.read_excel('sample.xlsx', skiprows=[0], usecols=[1, 4, 2, 3], names=['Name', 'Age', 'Phone', 'Address'])
# 生成SQL脚本
sql = 'INSERT INTO users (Name, Age, Phone, Address) VALUES\n'
for index, row in df.iterrows():
sql += f"('{row['Name']}', {row['Age']}, '{row['Phone']}', '{row['Address']}'),\n"
# 去除最后一个多余的逗号
sql = sql[:-2] + ';'
print(sql)
代码解释:
- 第 6 行,同时使用 skiprows 和 usecols 参数来指定读取的行列范围。skiprows=[0] 表示跳过第一行,usecols=[1, 4, 2, 3] 表示读取第 2、5、3、4 列。
- 第 7 行,构造一个自定义的列名列表 names=['Name', 'Age', 'Phone', 'Address']。
- 第 9 行,由于最后一行不需要逗号,因此需要将字符串中的最后一个逗号去掉。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python读取excel指定列生成指定sql脚本的方法 - Python技术站