使用pydobc向sql server插入或创建表的动态函数

时间:2014-02-14 19:46:44

标签: python pandas pyodbc

我想将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

0 个答案:

没有答案