问题描述
我有一个Python脚本,可以导入Excel数据,格式化几列/行并将结果保存为CSV。然后将此CSV(通过脚本)移动到服务器目录,以便我可以运行sql Bulk INSERT查询以将其内容填充到sql表中。 但是,我的脚本在保存CSV时将当前日期附加到文件名中。如何编辑代码的Bulk INSERT部分,以确保每次运行脚本时都捕获该文件名,因此我不必手动编辑sql部分?我知道我可以省略附加部分,但是出于审计目的,我需要它。
这是脚本的相关部分(带***的sql部分指示我希望自动捕获新名称的位置(例如testdata_15092020.csv)):
@H_404_4@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()
解决方法
怎么样?
file_name = "testdata_" + currenttime + ".csv"
cursor.execute("""BULK INSERT master.dbo.scriptresults
FROM '\\\SERVERNAME\\TESTFILES\\""" + file_name + """'
WITH
(
FIRSTROW = 2,FIELDTERMINATOR = ',',ROWTERMINATOR = '\n'
);""")