2017-01-04 1 views
1

Я пытаюсь преобразовать пустые ячейки в файл csv в NULL и загрузить их в таблицу SQL Server, чтобы он отображался как NULL, а не пустым. ниже кода работает, но они загружают NULL в виде строки. Можете ли вы мне помочь изменить код, чтобы он загружал NULL в SQL?Преобразование CSV Пустое ядро ​​в SQL NULL в Python

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() 
+0

Возможно полезно: http://stackoverflow.com/questions/1149665/how-do-you-insert-null-values-into-sql-server –

+0

С Python Я бы предположил «Нет», но, конечно, не «NULL». Но это догадка. – roganjosh

+0

Какой у вас писатель? Как он выводит команды SQL-данных для выполнения, импортируемые элементы данных, некоторую форму написания прямо-на-SQL-Server или?. –

ответ

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() 
+0

Я пробовал выше подход, но он не работает. Все еще отображается пустым в базе данных SQL. – Partha

+0

Promod - Ваше решение работает. Я должен был выполнить модификацию бит в коде, но технически это правильное решение. Благодарю. Я отредактировал рабочую версию в ответ. Еще раз спасибо. – Partha

Смежные вопросы