1
J'ai besoin de convertir une requête sur Excel en une insertion sur SQL, je ne vais pas créer une fonction qui fonctionnera sur n'importe quelle requête, et l'invoquer, il doit donc être assez réutilisable.SQL Insert From PowerQuery
let
SQL = (TableX as table) => let
// Get Columns Name abd use on the columns INSERT
SOURCE = TableX,
Names = Table.ColumnNames(SOURCE),
ListN = Table.FromList(Names),
TransposeN = Table.Transpose(ListN),
CombineN = Table.CombineColumns(TransposeN,Table.ColumnNames(TransposeN),Combiner.CombineTextByDelimiter(",", QuoteStyle.None),"M"),
ColunmsAsText = List.Single(CombineN[M]),
// ColumnsasText is all the Columns Name
// This part I cant do I need to format all columns acording to the type and Combine They
COLUNMS = (ListN as text) => let
TYPE = some.function.to.get.type(SOURCE[ListN]),
if TYPE = date then FIELDS = FIELDS & "'" & Date.ToText([ListN], "yyyy-MM-dd") & "'," else
if TYPE = text then FIELDS = FIELDS & "'" & [ListN] & "'," else
if TYPE = number then FIELDS = FIELDS & [ListN] & "," else FIELDS = FIELDS & "#error,"
in
FIELDS
INSERT = "INSERT INTO " & "TABLENAME" & " (" & ColunmsAsText & ") VALUES (" & FIELDS & ");",
NEWCOLUMNADD = Table.AddColumn(SOURCE, "SQL", each INSERT)
in
NEWCOLUMNADD
in
SQL
Le problème est la variable des domaines où, je dois composer une chaîne de toutes les colonnes, et la fonction « some.function.to.get.type », et la sortie serai quelque chose comme ça, pour chaque rangée:
INSERT INTO (Column_name1, Column_name2, Column_name3) value (15, '2017-05-20', 'Text hear');
Réservoirs pour l'aide.