· 8 years ago · Jun 29, 2018, 02:14 PM
1<?php
2
3// GENERATE TABLE FROM FIRST LINE OF CSV FILE
4
5$inputFile = 'file.csv';
6$tableName = 'file_csv';
7
8$fh = fopen($inputFile, 'r');
9 $contents = fread($fh, 5120); // 5KB
10fclose($fh);
11
12$fileLines = explode("n", $contents); // explode to make sure we are only using the first line.
13
14$fieldList = explode(',', $fileLines[0]); // separate columns, put into array
15echo 'CREATE TABLE IF NOT EXISTS `'.$tableName.'` ('."<br/>n";
16for($i = 0; $i <= count($fieldList); $i++)
17{
18 switch(gettype($fieldList[$i])) {
19 case 'integer':
20 $typeInfo = 'int(11)';
21 break;
22 case 'float':
23 $typeInfo = 'float';
24 break;
25 case 'string':
26 $typeInfo = 'varchar(80)';
27 break;
28 default:
29 $typeInfo = 'varchar(80)';
30 break;
31 }
32if(gettype($fieldList[$i]) != NULL) echo "t".'`'.$i.'` '.$typeInfo.' NOT NULL, --'.gettype($fieldList[$i]).' '.$fieldList[$i]."<br/>n";
33}
34echo ' PRIMARY KEY (`0`)'."<br/>n";
35echo ') ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;';
36
37for($i = 0; $i <= count($fieldList); $i++)
38{
39 if (is_numeric($fieldList[$i]))
40 {
41 if (strpos($fieldList[$i],'.') !== false){
42 $fieldList[$i] = (int)$fieldList[$i];
43 }else{
44 $fieldList[$i] = (float)$fieldList[$i];
45 }
46 }
47
48 switch(gettype($fieldList[$i])) {
49 case 'integer':
50 $typeInfo = 'int(11)';
51 break;
52 case 'float':
53 case 'double':
54 $typeInfo = 'float';
55 break;
56
57 case 'string':
58 $typeInfo = 'varchar(80)';
59 break;
60 default:
61 $typeInfo = 'varchar(80)';
62 break;
63 }
64if(gettype($fieldList[$i]) != NULL) echo "t".'`'.$i.'` '.$typeInfo.' NOT NULL, --'.gettype($fieldList[$i]).' '.$fieldList[$i]."<br/>n";
65
66}
67
68define('DECIMAL_SEPARATOR', '.');
69
70switch ($fieldList[$i])
71{
72 case (string)(int)$fieldList[$i]:
73 $typeInfo = (strpos($fieldList[$i], DECIMAL_SEPARATOR) === false) ? 'int(11)' : 'float';
74 break;
75 case (string)(float)$fieldList[$i]:
76 $typeInfo = 'float';
77 break;
78 default:
79 $typeInfo = 'varchar(80)';
80 break;
81}
82
83<?php
84
85// GENERATE TABLE FROM FIRST LINE OF CSV FILE
86
87$inputFile = 'file.csv';
88$tableName = 'file_csv';
89
90$fh = fopen($inputFile, 'r');
91 $contents = fread($fh, 5120); // 5KB
92fclose($fh);
93
94$fileLines = explode("n", $contents);
95
96$fieldList = explode(',', $fileLines[0]);
97echo 'CREATE TABLE IF NOT EXISTS `'.$tableName.'` ('."<br/>n";
98for($i = 0; $i <= count($fieldList); $i++)
99{
100
101 if(strlen($fieldList[$i]) == 0) $typeInfo = 'varchar(80)';
102 if(preg_match('/[0-9]/', $fieldList[$i])) $typeInfo = 'int(11)';
103 if(preg_match('/[.]/', $fieldList[$i])) $typeInfo = 'float';
104 if(preg_match('/[a-z\']/i', $fieldList[$i])) $typeInfo = 'varchar(80)';
105
106 echo "t".'`'.$i.'` '.$typeInfo.' NOT NULL, -- '.gettype($fieldList[$i]).' '.$fieldList[$i]."<br/>n";
107}
108echo ' PRIMARY KEY (`0`)'."<br/>n";
109echo ') ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;';