【发布时间】:2020-09-15 12:23:11
【问题描述】:
我有一个 Python 脚本,它可以导入 Excel 数据、格式化几列/行并将结果保存为 CSV。然后将此 CSV 移动到服务器目录(通过脚本),以便我可以运行 SQL Bulk INSERT 查询以将其内容填充到 SQL 表中。 但是,我的脚本在保存 CSV 时会将当前日期附加到文件名。如何编辑代码的 Bulk INSERT 部分以确保每次运行脚本时都能捕获此文件名,这样我就不必手动编辑 SQL 部分?我知道我可以省略附加部分,但出于审计目的我需要它。
这是我脚本的相关部分(带有 *** 的 SQL 部分表示我希望自动捕获新名称的位置(例如 testdata_15092020.csv)):
import os
import pandas as pd
import shutil
import glob
import pyodbc
os.system("cls")
# ...Multiple formatting steps...
currenttime = pd.to_datetime('today').strftime('%d%m%Y')
join.to_csv("testdata_" + currenttime + ".csv", index=False)
for CSVfile in glob.iglob(os.path.join('CURRENT WORKING DIRECTORY', "*.csv")):
shutil.copy(CSVfile, 'SQL SERVER FILE DIRECTORY')
# ...Connection to SQL Database section...
cursor.execute("""BULK INSERT testdb.dbo.scriptresults
FROM '\\\SERVERNAME\\TESTFILES\\***.csv'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);""")
cnxn.commit()
【问题讨论】:
-
问题:为什么要将数据插入
master数据库?master不应该用于用户对象,除非您打算将它们设为系统对象。 -
仅以它为例,我将使用替代数据库。编辑原始问题
标签: python sql-server csv pyodbc bulkinsert