将CSV文件作为单独的表自动从SFTP服务器传输到SQL Server可以通过以下步骤实现:
import pysftp
import csv
import pyodbc
# SFTP服务器连接信息
sftp_host = 'sftp.example.com'
sftp_username = 'username'
sftp_password = 'password'
sftp_directory = '/path/to/csv/files/'
# SQL Server连接信息
sql_server = 'sqlserver.example.com'
sql_database = 'database'
sql_username = 'username'
sql_password = 'password'
# 连接SFTP服务器
with pysftp.Connection(host=sftp_host, username=sftp_username, password=sftp_password) as sftp:
# 切换到CSV文件目录
sftp.cwd(sftp_directory)
# 获取目录下的所有CSV文件
csv_files = sftp.listdir()
# 连接SQL Server数据库
conn_str = f'DRIVER={{SQL Server}};SERVER={sql_server};DATABASE={sql_database};UID={sql_username};PWD={sql_password}'
conn = pyodbc.connect(conn_str)
cursor = conn.cursor()
# 遍历CSV文件并导入到数据库表中
for csv_file in csv_files:
with sftp.open(csv_file, 'r') as file:
reader = csv.reader(file)
# 跳过CSV文件的标题行
next(reader)
# 插入数据到数据库表中
for row in reader:
# 根据表结构调整数据类型和顺序
# 例如,将字符串转换为整数或日期格式
# 并将数据插入到数据库表中
sql = f"INSERT INTO table_name (column1, column2, ...) VALUES (?, ?, ...)"
cursor.execute(sql, row)
# 提交事务并关闭数据库连接
conn.commit()
conn.close()
请注意,上述示例中的代码需要根据实际情况进行适当的修改,包括SFTP服务器和SQL Server的连接信息、CSV文件的目录和表结构。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云