我有一个制表符分隔的文本文件,第一行是标签标题,也是制表符分隔的,例如:
Name ID Money
Tom 239482 $2093984
Barry 293984 $92938
唯一的问题是有30个列而不是3个,所以如果可以避免的话,我宁愿不必输入所有的(名称VARCHAR(50),...)。
我如何从文本文件中编写一个从头创建表的函数,并说该函数接受$ file_path和$ table_name?我是否必须再次编写所有列名称告诉mysql它们是什么类型并切断顶部或者当名称已经存在时是否有更优雅的解决方案?
答案 0 :(得分:1)
即使您可以找到一种方法,您将如何确定列类型?我想通过检查某些属性(int,string等)会有一些方法来确定列的类型。然后你需要处理奇怪的列,如Money,由于美元符号可能被视为字符串,但几乎可以肯定存储为整数。
除非你打算使用这个功能,否则我不会花时间把它拼凑起来。只是胖手指创造桌子。 (Ctrl-C,Ctrl-V是你的朋友)
答案 1 :(得分:1)
您可能需要将列类型映射到文件中的列。您可以通过将该数据添加到文本文件来完成此操作。例如
Name|varchar(32) ID|int(8) Money|int(10)
Tom 239482 $2093984
Barry 293984 $92938
或类似的东西。然后编写一个函数,使用第一行获取列名和columntype,并使用所有其他行填充表。您可能还想添加一种方法来命名给定的表等。但是,这可能与使用您的文本文件创建 SQL查询一样多(如果不是更多)。在顶部添加创建表语句,为每行添加插入语句。通过搜索和替换,可以非常快速地完成。