3 回答
TA贡献1833条经验 获得超4个赞
您可以创建一个脚本来解析您的csv文件并将数据放入db。
就像是:
$path = "yourfile.csv";
$row = 1;
if (($handle = fopen($path, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$row++;
$data_entries[] = $data ;
}
fclose($handle);
}
// this you'll have to expand
foreach($data_entries as $line){
$sql = "INSERT INTO ..."
$db->execute($line);
}
TA贡献1877条经验 获得超6个赞
但是csv中的列名称与数据库表中的列名称不同,我该怎么办?
没问题 您可以指定将哪个CSV列导入到哪个数据库列中。
LOAD DATA INFILE语法
默认情况下,当在LOAD DATA INFILE语句的末尾未提供任何列列表时,输入行应包含每个表列的字段。如果只想加载表的某些列,请指定列列表:
LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata (col1,col2,...);
当我发现INFILE语法太复杂时,我想做的事情是使用图形客户端(如HeidiSQL)一起单击适当的列顺序(它具有图形预览),然后复制并粘贴生成的SQL查询。
TA贡献1841条经验 获得超3个赞
如果您只想将CSV文件中最后一列的前7个字符加载到表的uniqComments列中,则可以执行以下操作...
load data local infile 'uniq.csv' into table tblUniq fields terminated by ','
enclosed by '"' lines terminated by '\n' (uniqName, uniqCity, @seven_chars)
set uniqComments=left(@seven_chars,7)
添加回答
举报