分享
三行代码  ›  专栏  ›  技术社区  ›  Gurdish

Python中的SQL大容量插入

  •  0
  • Gurdish  · 技术社区  · 1 周前

    我有一个Python脚本,它导入Excel数据,格式化一些列/行,并将结果保存为CSV。然后这个CSV被移动到一个服务器目录(通过脚本),这样我就可以运行一个sqlbulkinsert查询来将它的内容填充到一个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()
    
    1 回复  |  直到 1 周前
        1
  •  0
  •   jurez    1 周前

    这个怎么样?

    file_name = "testdata_" + currenttime + ".csv"
    
    cursor.execute("""BULK INSERT master.dbo.scriptresults
                   FROM '\\\SERVERNAME\\TESTFILES\\""" + file_name + """' 
                   WITH
                   (
                     FIRSTROW = 2,
                     FIELDTERMINATOR = ',',
                     ROWTERMINATOR = '\n'
                     );""")