Я хочу отправить данные 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
create
ее. Или вы можете использоватьcreate or replace
, чтобы всегда создавать его заново. - person Elliott Frisch   schedule 15.02.2014TEXT
или дажеCLOB
). - person Elliott Frisch   schedule 15.02.2014