Страницы: 1
RSS
Редактировать MySQL через Power Query
 
Добрый день.
Можно ли через Эксель или в частности Power Query редактировать базу MySQL?
 
На сколько мне известно, PQ не изменяет источники. Если только макросами.
Вот горшок пустой, он предмет простой...
 
Доброе время суток.
Цитата
PooHkrd написал:
На сколько мне известно, PQ не изменяет источники
Коллега, судя по этой фразе, вы и не пытались это делать ;)
По быстрому, рабочий протестированый вариант для SQL Server.
Код
let
    Source = Sql.Database("(localdb)\MSSQLLocalDB", "DAX", [Query=
"
Begin Transaction;
If (Object_Id(N'tempdb..#external', N'U') Is Not Null) Drop Table #external;
Create Table #external (fid int, fname nvarchar(5));
Insert Into #external (fid, fname)
Values 
(1, N'name1'), (2, N'name2'),
(3, N'name3'), (4, N'name4');
Insert Into dbo.test_table (fid, fname) 
Select tsrc.fid, tsrc.fname 
From #external tsrc
Left Join dbo.test_table tdest On (tsrc.fid = tdest.fid)
Where tdest.fid Is Null; 
Commit Transaction;
"])
in
    Source
 
Андрей VG, спасибо за такой вариант!
Можете в двух словах сказать - что и куда вставлять?)
Я пока не программист(
 
Цитата
dennn написал:
что?
Во первых - это
Цитата
Андрей VG написал:
вариант для SQL Server.
Я с MySQL знаком весьма поверхностно, да и то знакомство состоялось лет 10 тому назад. По поводу,
Цитата
dennn написал:
куда вставлять?
Если вы определитесь с кодом для MySQL, то в запрос Power Query, куда ещё?
Изменено: Андрей VG - 09.10.2017 15:43:24
 
Точно, вспомнил!
Вы недавно кому-то показывали как писать в csv, кажется, если описана структура файла и обращаться к файлу как к БД.
Склероз, блин.
Вот горшок пустой, он предмет простой...
 
Андрей VG, не понимая SQL не могу проверить - защита от повторной (на предварительном просмотре, например) вставки там реализована?
F1 творит чудеса
 
Цитата
Максим Зеленский написал:
защита от повторной (на предварительном просмотре, например) вставки там реализована?
Да, Максим, конечно, подзапрос источника вставки
Код
Select tsrc.fid, tsrc.fname 
From #external tsrc
Left Join dbo.test_table tdest On (tsrc.fid = tdest.fid)
Where tdest.fid Is Null; 
реализует Left Anti Semi Join, если данные по ключу fid уже есть в dbo.test_table, то никакой вставки не произойдёт. Ограничение Where.
 
Андрей VG, SQL Server и MySQL - это о дно и тоже?
 
Андрей VG, спасибо!
F1 творит чудеса
 
Цитата
dennn написал:
SQL Server и MySQL - это о дно и тоже?
Проблемы?
Изменено: Андрей VG - 09.10.2017 17:22:23
 
Андрей VG, я имел в виду ваше решение подходит как для SQL Server так и для  MySQL?
Я вставил ваш код в PQ - но там ничего толком не отобразилось и что с ним делать далее - не понимаю...
 
Цитата
dennn написал:
я имел в виду ваше решение подходит как для SQL Server так и для  MySQL
Нет, если по чистому SQL ещё есть общий стандарт, то по DML DDL у них есть различия. Да, и если бы вы тестировали на SQL Server - нужно выполнить модификацию кода: своё подключение к серверу, указать базу данных, свою таблицу, куда грузятся данные, учёт структуры таблицы по именам столбцов и данных. Я делал пример для тех, кто что-то в SQL понимает. Вам он, фактически, бесполезен.
Волшебная большая кнопка "Сделай за меня" в природе не существует.
P. S. Ещё и кросс
Изменено: Андрей VG - 09.10.2017 18:42:57
Страницы: 1
Наверх