динамическая функция для вставки или создания таблицы с использованием pydobc для сервера sql

Я хочу отправить данные csv в несуществующую таблицу sql.
В идеале я хочу отправить все переменные, не указывая ничего, кроме того, хочу ли я заменить или добавить таблицу. Это возможно?

Это так же просто, как использовать «создать таблицу» вместо «вставить в» и каким-то образом динамически получить информацию о типе данных, например. (varchar, int(20)).

могут ли панды сделать это еще? Я не могу найти его нигде.

Я начал с записи файла csv в базу данных SQL Server с использованием питон

как я придумал это

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

person Chet Meinzer    schedule 14.02.2014    source источник
comment
Можете быть более конкретными? Вы можете запросить, существует ли таблица, и если нет, то create ее. Или вы можете использовать create or replace, чтобы всегда создавать его заново.   -  person Elliott Frisch    schedule 15.02.2014
comment
мне нужно прочитать файл csv, чтобы получить максимальную длину и тип данных, чтобы предоставить информацию для оператора, или я могу написать общий оператор?   -  person Chet Meinzer    schedule 15.02.2014
comment
Я не знаю, какие у вас требования? Вы можете объявить максимальную длину максимально поддерживаемой вашей базой данных (или используя поле TEXT или даже CLOB).   -  person Elliott Frisch    schedule 15.02.2014