Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从带第一行标签的制表符分隔文本文件创建数据库表_Php_Mysql - Fatal编程技术网

Php 从带第一行标签的制表符分隔文本文件创建数据库表

Php 从带第一行标签的制表符分隔文本文件创建数据库表,php,mysql,Php,Mysql,我有一个以制表符分隔的文本文件,第一行是同样以制表符分隔的标签标题,例如: Name ID Money Tom 239482 $2093984 Barry 293984 $92938 唯一的问题是有些列有30个,而不是3个,所以如果可以避免的话,我不想键入所有的(名称VARCHAR(50),…) 我如何编写一个函数,从文本文件在php中从头开始创建表,并说该函数接受$file\u path和$table\u name?我是否必须再次写下所有的列名,告诉mys

我有一个以制表符分隔的文本文件,第一行是同样以制表符分隔的标签标题,例如:

Name    ID    Money
Tom    239482    $2093984
Barry    293984    $92938
唯一的问题是有些列有30个,而不是3个,所以如果可以避免的话,我不想键入所有的(名称VARCHAR(50),…)


我如何编写一个函数,从文本文件在php中从头开始创建表,并说该函数接受$file\u path和$table\u name?我是否必须再次写下所有的列名,告诉mysql它们是什么类型并切掉顶部,或者当名称已经存在时,是否有更优雅的解决方案?

即使您可以找到一种方法,您如何确定列类型?我想可以通过检查某些属性(int、string等)来确定列的类型。然后你需要处理一些奇怪的列,比如Money,由于美元符号,它可能被看作一个字符串,但几乎可以肯定的是,它应该被存储为一个整数


除非你打算大量使用这个函数,否则我不会花时间来拼凑它。只是胖手指的表创建。(Ctrl-C,Ctrl-V是您的朋友)

您可能需要将列类型映射到文件中的列。您可以通过将该数据添加到文本文件中来实现这一点。比如说

Name|varchar(32)    ID|int(8)    Money|int(10)
Tom    239482    $2093984
Barry    293984    $92938

或者类似的东西。然后编写一个函数,使用第一行获取列名和columntype,并使用所有其他行填充表中的数据。您可能还希望添加一种命名给定表等的方法。但是,这可能与使用文本文件创建SQL查询的工作量相同(如果不是更多的话)。在顶部添加一个create table语句,并为每行添加insert语句。通过搜索和替换,这可以很快完成。

谢谢大家,至少我还没有在谷歌上搜索一个简单的解决方案;我开始为它编写一个解析器,大约有10个正则表达式,我意识到只需键入它就可以更好地利用时间。