From 70f9ff75fc9e5d45f899ed3bc90291534560efed Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Wed, 26 Feb 2025 22:40:28 +0100 Subject: [PATCH] MS SQL: Fix CSV import (bug #859) --- adminer/drivers/mssql.inc.php | 16 ++++++++++------ changes.txt | 1 + 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/adminer/drivers/mssql.inc.php b/adminer/drivers/mssql.inc.php index 5dc15a5c..8c5f84a5 100644 --- a/adminer/drivers/mssql.inc.php +++ b/adminer/drivers/mssql.inc.php @@ -206,12 +206,16 @@ if (isset($_GET["mssql"])) { foreach ($rows as $set) { $values[] = "(" . implode(", ", $set) . ")"; } - queries("SET IDENTITY_INSERT " . table($table) . " ON"); - $return = queries("MERGE " . table($table) . " USING (VALUES\n\t" . implode(",\n\t", $values) . "\n) AS source ($columns) ON " . implode(" AND ", $where) //! source, c1 - possible conflict - . ($update ? "\nWHEN MATCHED THEN UPDATE SET " . implode(", ", $update) : "") - . "\nWHEN NOT MATCHED THEN INSERT (" . implode(", ", array_keys($set)) . ") VALUES ($columns);" // ; is mandatory - ); - queries("SET IDENTITY_INSERT " . table($table) . " OFF"); + if ($where) { + queries("SET IDENTITY_INSERT " . table($table) . " ON"); + $return = queries("MERGE " . table($table) . " USING (VALUES\n\t" . implode(",\n\t", $values) . "\n) AS source ($columns) ON " . implode(" AND ", $where) //! source, c1 - possible conflict + . ($update ? "\nWHEN MATCHED THEN UPDATE SET " . implode(", ", $update) : "") + . "\nWHEN NOT MATCHED THEN INSERT (" . implode(", ", array_keys($set)) . ") VALUES ($columns);" // ; is mandatory + ); + queries("SET IDENTITY_INSERT " . table($table) . " OFF"); + } else { + $return = queries("INSERT INTO " . table($table) . " VALUES\n" . implode(",\n", $values)); + } return $return; } diff --git a/changes.txt b/changes.txt index 1d657c3e..33924e2f 100644 --- a/changes.txt +++ b/changes.txt @@ -7,6 +7,7 @@ SQLite: Display all rows of variable values SQLite: Remove support for SQLite version 2 MS SQL: Support export (bug #480) MS SQL: Display foreign keys ON UPDATE and ON DELETE +MS SQL: Fix CSV import (bug #859) MS SQL: Fix altering foreign key MS SQL PDO: Support offset MS SQL: Remove support for MSSQL extension