gpt4 book ai didi

php - 将 CSV 文件保存到 mysql 数据库中

转载 作者:行者123 更新时间:2023-11-29 03:57:33 28 4
gpt4 key购买 nike

我在一个目录中有很多 csv 文件。对于这些文件,我必须编写一个脚本,将它们的内容放入我的数据库的正确字段和表格中。我几乎是 php 语言的初学者:我在 Internet 上找到了一些代码。它似乎有效,但我被困在一个阶段。这个网站上有一些主题是相关的,但是我没有找到ecat问题。

我写了一个 php 脚本,允许获取这些文件的路径和名称。我也设法创建了一个表,其名称取决于每个 csv(例如:文件“data_1.csv”在 my-sql 中给出了表 data_1.csv)。所有的表都有三个相同的字段,id、url、value。最后要做的是填充这些表,方法是读取每个文件并将用“_”字符分隔的值放在正确的表中。例如,如果一行‘data_1.csv’是

8756|http://example.com|写的东西

我想在 data_1.csv 表中获取一条记录,其中 8756 在 id 中,在 url 字段中为 http://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 数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11432511/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com