python - 来自 Python/SQLAlchemy 的 SQL Server 查询中需要单个反斜杠

标签 python sql-server python-2.7 csv sqlalchemy

我正在尝试通过 python 脚本使用 SQL Server 2014 中的 BULK INSERT 函数编写查询,以将大型 CSV 文件插入数据库中的表中。我有以下示例代码:

import pymssql
import sqlalchemy

engine = create_engine('connection_string_goes_here', encoding="utf-8")
table_name = 'my_table'
source_path = 'C:\path\to\csv\test.csv'
q = ("BULK INSERT " + table_name + " " +
     "FROM '" + source_path + "' " +
     "WITH ( DATAFILETYPE = 'char', " +
     "FIELDTERMINATOR = ',', " +
     "ROWTERMINATOR = '\\n')")
connection = engine.connect()
connection.execute(q)
connection.close()

我得到的错误是:

(pymssql.OperationalError) (4861, Cannot bulk load because the file "C:\\path\\to\\csv\\test.csv"could not be opened. Operating system error code 3(The系统找不到指定的路径。)。DB-Lib 错误消息 20018 ...

我相信这是因为双反斜杠问题。反斜杠按字面意思包含在 BULK INSERT 语句中,而不是翻译成单个反斜杠。我在 SQL Server 错误日志中没有看到任何内容。

我的设置使用在单独的 Windows 机器上运行的 MS SQL Server Express 2014 和 Python 2.7.9。

我已经尝试在 source_path 上使用原始字符串 (r'C:\path\to\csv\test.csv) 和 decode 字符串函数,但都没有帮助。

最佳答案

看起来使用 / 而不是 \ 是可行的。

关于python - 来自 Python/SQLAlchemy 的 SQL Server 查询中需要单个反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31652995/

相关文章:

python pandas 读取 HTML 表格

sql - 消除并减少重叠的日期范围

python - 有没有办法抑制 TensorFlow 打印的消息?

python - Pandas 3x3 散点矩阵缺少标签

Python - 如何创建值出现的运行列表并计算第一个和最后一个之间的时间差?

sql-server - azure sql DB_ID 不起作用

c# - 如何使用 dapper 将 DbGeography 插入 SQL Server

python-2.7 - 无法使用 psycopg2 从 Amazon Redshift 读取数据

python - JSON 解码字符串

python - int'对象没有属性 '__getitem__'