Jag har en SQL-databas med ca 9000 poster i, med en himla massa kolumner...
Sen har jag en csv / excel fil med 3 kolumner (www - email - person id )...
I sql-database finns en likadan kolumn som heter person id ...
Jag vill kunna läsa in min csv / excel fil, och söka efter person id,
och såfort den hittar ett matchande person id,
så skall den uppdatera www och email från csv/excel >> SQL ...
Jag har för mig att det blir någon form av arraylösning,
men där tar mitt kunnande slut ...
någon som har ett tips i rätt riktning?
*** UPPDATERING ***
Har nu lyckats läsa in csv filen på min php fil, med följande kod...
Just nu skriver den ju tyvärr ut varje csv rad som en rad .. personid;email;www ...
Hur får jag den att "dela upp det" så att jag kan plocka varje del in i olika kolumner i SQL?
<?php
$host="127.0.0.1"; // Host name
$username="*"; // Mysql username
$password="*"; // Mysql password
$db_name="*"; // Database name
$tbl_name="table1"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$row = 1;
if (($handle = fopen("pargo-sql.csv", "r", ";")) !== FALSE) {
while (($data = fgetcsv($handle, 10000, ",")) !== FALSE) {
$num = count($data);
//echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
//echo $data[$c] . "<br />\n";
$info = $data[$c];
list($pid, $email, $www) = explode(";", $info);
echo "<br />";
mysql_query("UPDATE table1 SET www='$www' AND email='$email' WHERE pid='$pid'");
}
}
fclose($handle);
}
?>
Det kommer inte upp någonting alls .. den bara visar en vit sida som laddar, och sen har den laddat klart plötsligt, men inget visas trots mysql_error.
Jag testade nu att skriva ut all info enligt såhär:
echo "PID: ".$pid." - Email: ".$email." - WWW: ".$www."";
och all info skrivs ut ordentligt, så den har inga lässvårigheter från csv filen ..
Om jag ändrade till följande:
mysql_query("UPDATE table1 SET www='".$www."', email='".$email."' WHERE pid='".$pid."'");
( alltså lägger till ". ." runt orden ) så får jag upp att den får timeout, men vad jag har för mig så ska det ju bara vara ' ' runt?
Finns det ingen import-funktion i MySQL? Det borde det göra...
I så fall är den utan jämförelse enklaste lösningen att logga in i databasen, importera Excelfilen till en ny tabell som vi kan kalla ExcelUsers. Om den tabell du vill uppdatera heter MyUsers och bl.a. innehåller kolumnerna Email och WWW som ska uppdateras för personerna i filen, så kör du en UPDATE sats i databasen direkt:
UPDATE M
SET
Email = E.Email,
WWW = E.WWW
FROM
MyUsers M
INNER JOIN ExcelUsers E ON M.personID = E.PersonID
Inner join - ser till att bara de personid:n som finns både i MyUsers och i ExcelUsers uppdateras.
När detta är gjort kan du ta bort ExcelUsers.
258 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e