Sql server 使用PYODBC更新sqlserver

Sql server 使用PYODBC更新sqlserver,sql-server,csv,pyodbc,Sql Server,Csv,Pyodbc,我有一个CSV文件,在SQL Server中将标题定义为int的列下的某些单元格中包含“\N” 我每天使用pyodbc从提供的CSV更新SQL server数据。问题是,每当CSV文件中有“\N”时,SQL server更新就会导致错误,我必须删除带有“\N”的行才能进行更新 是否有任何方法可以更新SQL Server中int-type列中的“\N” 下面是代码 with open (Result_File, 'r') as h: reader = csv.reader(h) c

我有一个CSV文件,在SQL Server中将标题定义为int的列下的某些单元格中包含“\N”

我每天使用pyodbc从提供的CSV更新SQL server数据。问题是,每当CSV文件中有“\N”时,SQL server更新就会导致错误,我必须删除带有“\N”的行才能进行更新

是否有任何方法可以更新SQL Server中int-type列中的“\N”

下面是代码

with open (Result_File, 'r') as h:
    reader = csv.reader(h)
    columns = next(reader)
    query = "INSERT into dbo.test({0}) values ({1})"
    query = query.format(','.join(columns), ','.join('?' * len(columns)))
    for data_line in reader:
        cur.execute(query,data_line)
使用循环遍历从对象返回的列表,用指定的默认值(
0
)替换
\n
值中的元素


请注意,is解决方案非常具体,如果出现其他价值替代情况,则很难维护。如果可能的话,我会修复创建输入文件的进程,这样处理代码就可以通用化,更具可读性。

\n
是表示行终止的字符串值,不能转换为整数类型。遇到此值时,应在目标列中插入什么<代码>空值?一些默认值(
0
)?谢谢Brian,0就可以了。亲爱的Brian,任何更新。。
...
for data_line in reader:
    # substitute 0 if the column value is '\n'
    cur.execute(query, [0 if value == '\n' else value for value in data_line])