php – 将CSV文件保存到mysql数据库中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 将CSV文件保存到mysql数据库中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3112字,纯文字阅读大概需要5分钟。
内容图文
![php – 将CSV文件保存到mysql数据库中](/upload/InfoBanner/zyjiaocheng/890/00772a37bdd04008b79e3077e86d4bd5.jpg)
我在目录中有很多csv文件.使用这些文件,我必须编写一个脚本,将其内容放在我的数据库的正确字段和表中.我几乎是php语言的初学者:我在互联网上找到了一些代码.它似乎有效,但我陷入了困境.有些主题与本网站有关,但我没有发现ecat问题.
我写了一个php脚本,允许获取这些文件的路径和名称.我也设法创建一个名称取决于每个csv的表(例如:file’data_1.csv’在my-sql中提供表data_1.csv).所有表都有三个相同的字段,id,url,value.
最后要做的是填充这些表,方法是读取每个文件,并将值以“|”字符分隔的值放在右表中.例如,如果是’data_1.csv’的行
8756 | htttp://example.com |写的东西
我想在data_1.csv表中获取一条记录,其中8756在id中,在url字段中是htttp://example.com,在value字段中写入了一些内容.
我找到了用fcsvget函数读取和打印这些csv的方法.但我不知道如何让这些行进入SQL数据库.在这一点上有人可以帮助我吗?
这是我的下面的脚本
<?php
ini_set('max_execution_time', 300);
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass, true) or die ('Error connecting to mysql');
$dbname = 'test_database';
mysql_select_db($dbname);
$bdd = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
else {
echo "hello <br>";
}
$dir = 'C:\wamp\www\test';
$imgs = array();
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if (!is_dir($file) && preg_match("/\.(csv)$/", $file)) {
array_push($imgs, $file);
}
}
closedir($dh);
} else {
die('cannot open ' . $dir);
}
foreach ($imgs as $idx=>$img) {
$class = ($idx == count($imgs) - 1 ? ' class="last"' : '');
$filePath=$dir . '\\'. $img;
$file = fopen($filePath, "r") or exit("Unable to open file!");
$nom = 'FILE: ' . $dir . '\\'. $img;
echo $nom;
settype($nom, "string");
echo '<br>';
$chemin = '<img src="' . $dir . $img . '" alt="' .
$img . '"' . $class . ' />' . "\n";
echo $chemin;
$file_name = basename($filePath);
$sql = 'CREATE TABLE `' . $file_name . '` (id int(20000), url varchar(15), value TEXT)';
mysql_query($sql,$conn);
$handle = fopen($filePath, 'r');
while (($row = fgetcsv($handle)) !== false) {
foreach ($row as $field) {
echo $field . '<br />';
}
}
fclose($handle);
}
echo ("VERIFY");
for ($i = 1; $i <= 1682; $i++) {
echo ("<br>A : " . $i);
$checkRequest= "select * from movies where movieID='". $i."'";
echo ("<br>". $checkRequest);
if ($result = $mysqli->query($checkRequest)) {
printf("<br> Select ". $i ."returned %d rows.\n", $result->num_rows);
if ($result->num_rows == 0) {
echo ("I : " . $i);
}
$result->close();
}
}
$mysqli->close();
?>
解决方法:
MySQL提供了一个很棒的功能,允许您在单个查询中直接导入CSV文件.
您正在寻找的SQL命令是LOAD DATA INFILE
手册页面:http://dev.mysql.com/doc/refman/5.1/en/load-data.html
快速举例:
LOAD DATA INFILE 'fileName'
INTO TABLE tableName
FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(
field1,
field2,
field3,
@variable1,
@variable2,
etc
)
set
(
field4 = concat(@variable1,@variable2)
);
这是一个相当基本的例子,但它涵盖了你想要的大部分内容.手册页提供了如何使用它完成一些非常复杂的内容的完整详细信息.
希望有所帮助.
内容总结
以上是互联网集市为您收集整理的php – 将CSV文件保存到mysql数据库中全部内容,希望文章能够帮你解决php – 将CSV文件保存到mysql数据库中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。