使用pymssql将文本文件批量插入SQL Server

时间:2018-06-21 23:17:24

标签: python pymssql

我正在尝试使用pymssql将文本文件导入SQL Server 2014(我是python的初学者,但是如果您了解一点SQL,似乎这是最简单的方法)。 SQL Server与我要导入的文件位于同一台计算机上。

这是我当前的代码

SQLCon = pymssql.connect(host=ServerNm,database=DatabaseNm)
Cursor = SQLCon.cursor()

BulkInsert = '''
    BULK INSERT OD_List
    FROM {}
    WITH (
        FIRSTROW=2
      , FIELDTERMINATOR=','
      , ROWTERMINATOR='\n'
    )
'''.format("'C:\Users\thomsog1\Desktop\TM Tool\Test\SQL\Inputs\OD_List.txt'")

Cursor.execute(BulkInsert)
SQLCon.commit()

我在互联网上找到了一些编码示例,并尝试了所有这些示例,但都无济于事...我不断遇到以下错误:

File "pymssql.pyx", line 467, in pymssql.Cursor.execute (pymssql.c:7561)      
pymssql.OperationalError: (4861, 'Cannot bulk load because the file 
"C:\\Users\thomsog1\\Desktop\\TM Tool\\Test\\SQL\\Inputs\\OD_List.txt" could 
not be opened. Operating system error code 123(The filename, directory name, 
or volume label syntax is incorrect.).DB-Lib error message 20018, severity 
16:\nGeneral SQL Server error: Check messages from the SQL Server\n') 

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

对于T-SQL,BULK INSERT语句的FROM子句中的文件路径需要用单引号引起来,但它也包含反斜杠,因此我们需要使用Python原始字符串(r"..."),因此

.format(r"'C:\Users\thomsog1\Desktop\TM Tool\Test\SQL\Inputs\OD_List.txt'")