SQL 批量插入 Python
SQL Bulk Insert in Python
我有一个 Python 脚本,可以导入 Excel 数据,格式化一些 columns/rows 并将结果保存为 CSV。然后将此 CSV 移动到服务器目录(通过脚本),以便我可以 运行 SQL 批量插入查询将其内容填充到 SQL Table 中。
但是,我的脚本在保存 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()
这个怎么样?
file_name = "testdata_" + currenttime + ".csv"
cursor.execute("""BULK INSERT master.dbo.scriptresults
FROM '\\SERVERNAME\TESTFILES\""" + file_name + """'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);""")
我有一个 Python 脚本,可以导入 Excel 数据,格式化一些 columns/rows 并将结果保存为 CSV。然后将此 CSV 移动到服务器目录(通过脚本),以便我可以 运行 SQL 批量插入查询将其内容填充到 SQL Table 中。 但是,我的脚本在保存 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()
这个怎么样?
file_name = "testdata_" + currenttime + ".csv"
cursor.execute("""BULK INSERT master.dbo.scriptresults
FROM '\\SERVERNAME\TESTFILES\""" + file_name + """'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);""")