我有一个csv文件。我想用python:
以关系方式组织这个(非标准化的)数据应创建一个连接表格的ID。
例如,从csv文件中分割我的数据并创建m:n关系。我的结果应该是三张桌子。
以下示例可能会澄清这一点:
person_name person_age, pet_name
Lisa, 8, Snowball I
Lisa, 8, Snowball II
Bart, 10, Santa's Little Helper
这应该是结果:
person_ID, person_name, person age
1, Lisa, 8
2, Bart, 10
pet_ID, pet_Name
1, Snowball I
2, Snowball II
3, Santa's Little Helper
person_ID, pet_ID
1, 1
1, 2
2, 3
我想知道python中是否有模块或某些代码来完成此任务。
编辑: 到目前为止,我的策略是创建一个带有格式化字符串的mySQL脚本。下面的代码显示了我如何创建INSERT脚本而不需要任何新的ID或密钥。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import csv
#set counter variable
cntr = 0
# open file to read
myfile = open('insert_bundesland.sql', 'w')
# Create header
myfile.write('INSERT INTO tbl_local (loc_gemeindeschl_ID, loc_bundesland_ID, loc_bundesland, loc_stadt, loc_stadt_status, loc_einwohner, loc_einwohner_m, loc_einwohner_w)\n')
# open csv file
with open('gem_schl.csv') as f:
reader = csv.reader(f)
# init for loop - loop over row
for row in reader:
# split if there is beside the name of city a status of the city
x = str.split(row[3], ",")
if len(x) == 1:
# if there is no status assign NULL string value
x.append('NULL')
del row[3]
x = row + x
if cntr == 0:
cntr = cntr + 1
else:
if cntr == 1:
# write sql statements
x = "\tVALUES\t(%s, %s, '%s', '%s', '%s', %s, %s, %s)\n" % (x[2], x[0], x[1], x[11], x[12], x[3], x[4], x[5])
myfile.write(x)
cntr = cntr + 1
else:
x = "\t\t\t(%s, %s, '%s', '%s', '%s', %s, %s, %s)\n" % (x[2], x[0], x[1], x[11], x[12], x[3], x[4], x[5])
myfile.write(x)
myfile.write(';')
myfile.close()