问题: 当my csv datefield=''时,mysql服务器正在将日期转换为1900,01,01。在
我想要的: 我想动态评估是否要发送“”作为日期,而不是发送NULL或None。在
编辑:按照beargle的建议,我尝试了pypyodbc写了这段疯狂的代码。。。而且似乎很管用。在
我创建了一个列是日期的列表, 逐项检查它,并评估它是否应该是无。在
如果你有更好的主意,请告诉我!在
import pypyodbc as pyodbc
def sendTOSQL(csvLocation,sqlTableName):
x=0
with open (csvLocation, 'r') as f:
cnxn = pyodbc.connect('DSN=dashboarddatadev')
cursor = cnxn.cursor()
reader = csv.reader(f)
list=[]
cursor.execute('select * from %s' % sqlTableName)
for i in cursor.description:
if i[1].__name__=='datetime':
list.append(1)
else:
list.append(0)
cnxn2 = pyodbc.connect('DSN=dashboarddatadev')
cursor = cnxn2.cursor()
reader = csv.reader(f)
columns = next(reader)
print columns
for data in reader:
changeNulls=zip(data,list)
y=0
for item in changeNulls:
if item[1]==1 and item[0]==' ':
data[y]=None
y=y+1
query = 'insert into {0}({1}) values ({2})'
query = query.format(sqlTableName,','.join(columns), ','.join('?' * len(columns)))
itemchange=re.compile(re.escape('case,'),re.IGNORECASE)
query=itemchange.sub('"case",',query)
itemchange=re.compile(re.escape('full,'),re.IGNORECASE)
query=itemchange.sub('"full",',query)
cursor.execute(query, data)
if x % 1000000==0:
if len(str(x)) > 7:
xstar=str(x)[0:2]
else:
xstar=str(x)[0]
if xstar=='0':
logging.debug(r'processing and counting rows to a million' )
else:
logging.debug(r'%s,000,000 rows processed and counting' % (xstar))
x=x+1
cursor.commit()
目前没有回答
相关问题 更多 >
编程相关推荐