【问题标题】:Convert CSV Blank cell to SQL NULL in Python在 Python 中将 CSV 空白单元格转换为 SQL NULL
【发布时间】:2017-05-19 07:43:49
【问题描述】:

我正在尝试将 csv 文件中的空白单元格转换为 NULL 并将它们上传到 SQL Server 表中,以便它显示为 NULL 而不是空白。下面的代码有效,但它们将 NULL 作为字符串加载。你能帮我修改代码以便在 SQL 中加载 NULL 吗?

reader = csv.reader(f_in)    # setup code
writer = csv.writer(f_out)

row = next(reader)           # handle first line (with no replacements)
writer.writerow(row)
last_row = row               # always save the last row of data that we've written
variable = None

for row in reader:           # loop over the rest of the lines
    row = [x if x else "NULL" for x, y in zip(row, last_row)]  # replace empty strings
    writer.writerow(row)
    last_row = row




with open(outputFileName,'r') as fin: # `with` statement available in 2.5+    
dr = csv.DictReader(fin) # comma is default delimiter        
to_db = [(i['SubFund'], 
        i['Trader'], 
        i['Prime Broker/Clearing Broker']) 

cur.executemany("INSERT INTO Citco_SPOS (" + 
            "subfund, " +
           "trader, " +
            "prime_broker_clearing_broker, " + +
            "VALUES (?, ?,  ?);", to_db)
con.commit()

【问题讨论】:

  • 从 Python 我猜是None,但肯定不是'NULL'。但这是一个猜测。
  • 你的作者是什么?它是如何输出数据的——要执行的 SQL 命令、要导入的数据元素、某种形式的直接到 SQL-Server 的编写器,还是??。
  • 我尝试使用无,数据加载后在 SQL Server 表中显示为空白。
  • Laughing Vergil - 我添加了更多代码来了解它如何在 SQL Server 中插入数据。 - 谢谢。

标签: python sql-server python-3.x csv null


【解决方案1】:

这应该可行

import pyodbc
import csv
cnxn = pyodbc.connect(connection string)
cur = cnxn.cursor()
query = "insert into yourtable values(?, ?)"
with open('yourfile.csv', 'rb') as csvfile:
    reader = csv.reader(csvfile, delimiter=',')
    for row in reader:
        for i in range(len(row)):
            if row[i] == '':
                row[i] = None
        cur.execute(query, row)   
    cur.commit()

【讨论】:

  • 我尝试了上述方法,但它不起作用。在 SQL 数据库中仍然显示为空白。
  • Promod - 您的解决方案有效。我不得不对代码进行一些修改,但从技术上讲,这是正确的解决方案。谢谢。我已经编辑了工作版本作为答案。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-04
  • 2017-03-31
  • 1970-01-01
  • 1970-01-01
  • 2021-02-03
  • 2012-10-14
相关资源
最近更新 更多