通过csv在mysql里建表
我有一个csv的表, 表里第一行是标题, 以后都是数据。 有没有方法直接通过csv在mysql里建表, table name就是csv的文件名, csv文件的第一行就是表的标题名。
如果只是一个csv表,那么,你用ultraedit打开它,
直接编辑它,改造成
create table ....
insert into <t> values(....
应该很快.
import re def _build_regex_str(len): if len<1: return if len==1: return r"^(.*)$" result = r"^(.*?)" for i in range(len-2): result +=r",(.*?)" result +=r",(.*)$" return result def _build_create_table_str(table_name,column_count): if column_count <1: return if column_count == 1: return r"create table %s (\r\n'\1' varchar(45),\r\nprimary key(`\1`))\r\n"%table_name result = r"create table %s (\r\n'\1' varchar(45)"%table_name; for i in range(column_count-2): result +=r",\r\n'\%i' varchar(45)"%(i+2) result +=r",\r\nprimary key('\1'))" return result def _create_sql_file(sql_file_name,source_file_name): src_file=open(source_file_name+".csv") tar_file=open(sql_file_name+".sql","w") s = src_file.readline() column_count = len(s.split(",")) if column_count>=1: regex = re.compile(_build_regex_str(column_count)) tar_file.write(regex.sub(_build_create_table_str(sql_file_name,column_count),s) tar_file.close(); src_file.close(); if __name__=="main": _create_sql_file("target_file_name","source_file_name")