我想将csv数据发送到不存在的sql表 理想情况下,我想发送所有变量而不指定任何内容,除了我是否要替换或附加表。这可能吗?
是否像使用'create table'而不是'insert into'一样简单,并以某种方式动态地导出数据类型信息,例如(varchar,int(20))。
熊猫能做到吗?我无法在任何地方找到它。 我开始了 Writing a csv file into SQL Server database using python我是如何想出这个
的import pyodbc, csv
def sendTOSQL(csvLocation,sqlTableName):
with open (csvLocation, 'r') as f:
reader = csv.reader(f)
columns = next(reader)
query = 'insert into {0}({1}) values ({2})'
query = query.format(sqlTableName,','.join(columns), ','.join('?' * len(columns)))
print query
cnxn= pyodbc.connect("DSN=dashboarddatadev")
cursor = cnxn.cursor()
for data in reader:
cursor.execute(query, data)
cursor.commit()
for data in reader:
cursor.execute(query, data)
cursor.commit()
只要我先创建表格就行,但我不知道数据类型是什么,所以我必须手动完成。
cnxn= pyodbc.connect("DSN=dashboarddatadev")
cursor = cnxn.cursor()
cursor.execute("create table test(agency varchar(100), ethnicity varchar(30))")
cursor.commit()
我的问题是......首先是问题吗?如果是这样,我如何动态填写数据类型信息?
我需要......
with open('k:/temp/vars.csv','w') as vars:
for item in formatList:
p = re.compile('\d+')
varlength=p.findall(item)
if item[0]=='A':
print 'Varchar(%r)' % varlength
elif item[0]=='D':
print 'Date(%r)' % varlength
elif item[0]=='N':
print 'Int(%r)' % varlength
elif item[0]=='F':
print 'Int(%r)' % varlength