php 查找csv并返回行数据,使用PHP获取CSV文件的第一行并使用数据创建MySQL表

该博客探讨了如何使用PHP读取CSV文件的第一行,并根据数据类型自动创建MySQL表结构。作者遇到了问题,因为gettype()总是返回所有列的数据类型为'string',而期望的是int、float和string。示例代码显示了如何尝试根据数据类型为每一列分配适当的MySQL字段类型。
摘要由CSDN通过智能技术生成

我正在尝试使用一个相当大的CSV文件并将其插入到MySQL数据库中以便在项目中引用。我想使用文件的第一行来创建使用适当的数据类型的表,而不是每个列的varchar。最终目标是自动执行此过程,因为我有几个类似的文件,但每个文件都有不同的数据和不同数量的CSV文件中的“列”。我遇到的问题是gettype()返回每个列的'string',而不是int,float和string,因为我希望它。

平台是PHP 5,操作系统是Ubuntu 8.04

这里是我的代码到目前为止:

// GENERATE TABLE FROM FIRST LINE OF CSV FILE

$inputFile = 'file.csv';

$tableName = 'file_csv';

$fh = fopen($inputFile, 'r');

$contents = fread($fh, 5120); // 5KB

fclose($fh);

$fileLines = explode("\n", $contents); // explode to make sure we are only using the first line.

$fieldList = explode(',', $fileLines[0]); // separate columns, put into array

echo 'CREATE TABLE IF NOT EXISTS `'.$tableName.'` ('."
\n";

for($i = 0; $i <= count($fieldList); $i++)

{

switch(gettype($fieldList[$i])) {

case 'integer':

$typeInfo = 'int(11)';

break;

case 'float':

$typeInfo = 'float';

break;

case 'string':

$typeInfo = 'varchar(80)';

break;

default:

$typeInfo = 'varchar(80)';

break;

}

if(gettype($fieldList[$i]) != NULL) echo "\t".'`'.$i.'` '.$typeInfo.' NOT NULL, --'.gettype($fieldList[$i]).' '.$fieldList[$i]."
\n";

}

echo ' PRIMARY KEY (`0`)'."
\n";

echo ') ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;';示例第一行:

1,0,0,0,0,0,0,0,0,0,0,0,0.000000,0.000000,0,0,0,,0,0,1,0,50,'召回之道(旧)',

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP+Csv(Excel)通用成绩查询系统【无需后台】继承原来(asp/php+txt/excel windows/Linux等五大系列超过12个不同版本)的通用易用优点,同样通用于几乎所有工资等查询,成绩查询,物业查询,收电费查询,录取查询,证书查询等场景哦。 只需Excel二维导出为逗号分开的Csv文件,然后通过FTP工具上传。查询速度虽然低于php+txt,却远高于php+excel。 使用用途: 适合修改不频繁、保密性不高的成绩、工资、物业水电费等各种精准查询。 1. 成绩查询系统,每个学校,教育机构,事业单位考试等都可以用到 2. 工资查询系统,每个学校,教育机构,事业单位考试等都可以用到 3. 物业费查询系统,每个企业,学校,所有单位都可能用到 4. 水电费查询系统,小区,物业公司,大学寝室等 5. 其他如分班查询,录取查询,证书查询等修改不多的各种查询系统 特色优势 1. 非常通用:几乎通用于所有二维,可以满足你的大部分需求。 2. 简单方便:代码小巧简单,可以快速修改以适合多联查等各种场景 3. 灵活易用:只需修改几个参数即可私人定制查询。 4. 快速使用:发布一次成绩最快两三分钟可解决。 局限性说明 1. 修改越频繁越不适合(成绩、工资、水电费等一般都一次性出来不修改) 2. 只适合二维(一般数据库都采用二维结构,首列标题,以后一一条数据) 3. 不限制单库记录数。建议单库控制在1万条以内(可分库,各库互不影响) 4. 暂不支持公式、图片、网址。可付费定制。 使用建议: 直接通过FTP上传即可使用,建议先直接上传查询测试。 前台访问:http://网址/目录/ (上传直接使用,无需mysql数据库等的支持) 然后notepad++打开inc/conn.Php查看参数与网页对应关系。 然后打开默认自带的数据库对比查询结果,查看对应关系。 csv版打开方式:数据文件的后缀改为,csv后用Excel文件查看。 使用步骤: 参数修改 1.软件notepad++或记事本打开inc/conn.php修改网站标题、查询条件等参数,具体见该文件见里面文字说明。 数据转化 1.去边:留下二维部分(留下:首列标题,以后一一条数据)。 2.多列标题的话得合并为一; 如果有合并单元格:拆分单元格后把各单元格都填充拆分前的内容。 3.转csv:excel另存为逗号分隔的.csv文件。 源码上传 1.源码的上传:保持原有结构上传到网站即可直接使用,上传请注意编码(gb2312),具体可以看视频教程。 数据上传 1.上传方式:FTP工具上传(推荐);远程桌面上传;在线文件管理工具管理;等。 2.通过指定编码(即字符集:gb2312)上传代码和数据,上传到网站数据库目录下。 3.新增查询类别:新上传一个数据。注意后缀和原来的一致。查询条件要和inc/conn.Php设置的一样。 4.减少查询类别:请删除数据库目录下对应的文件名, 5.更改查询类别:重命名相应的文件名。 6.修改数据内容:上传新转的数据替换原来的同名数据。 改进说明: 2017.04.28 1. 界面完全改变:使用最新付费版界面,美观了许多 2. 使用说明大更新:全部重排了说明 3. 下拉选择对文件识别更精准
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值