У меня есть PHP скрипт, который вставляет данные из файла CSV в Oracle таблице:Объединить данные из CSV-файла в Oracle
$handle = fopen('file.txt', "r");
for($i =1;($data = fgetcsv($handle, 10000, ";")) !== FALSE; $i++) {
// The query uses placeholders for data
$sql = "INSERT INTO table
(col1,col2,col3,col4)
VALUES
(:val1,:val2,:val3,:val4)";
$sth = $conn->prepare($sql);
// The data is bound to the placeholders
$sth->bindParam(':val1', $data[0]);
$sth->bindParam(':val2', $data[1]);
$sth->bindParam(':val3', $data[2]);
$sth->bindParam(':val4', $data[3]);
// The row is actually inserted here
$sth->execute();
$sth->closeCursor();
Теперь я пытаюсь заменить вставку с слияния так Я могу сделать isert только в том случае, если данные уже не существуют.
Я посмотрел на некоторые SO вопросы и документации Oracle, но до сих пор не могу понять, что из (без использования процедур, whice все я нашел ...)
пожалуйста, вы можете помочь?
* Теперь я пытаюсь заменить вставку слиянием, поэтому я могу сделать isert, только если данные уже не существуют. * Почему? В чем проблема с простым «INSERT»? Если у вас есть требуемые ограничения, определенные в таблице, вам не нужно будет думать о существующих строках. –
Вы правы. я могу использовать простой ** INSERT **. но мне понадобится запрос ** MERGE **, чтобы сделать некоторые продвинутые вещи (используя совпадение, когда они не совпадают). Можете ли вы помочь мне с синтаксисом? – RidRoid
Хорошо, см. Мой ответ. –