Пример #1
0
        private void describeMenu_Click(object sender, EventArgs e)
        {
            ssh.Connect();
            DescribeOutput descOutput = ssh.Describe(listBox1.SelectedItem.ToString());

            DataTable dtDescribe = new DataTable();

            dtDescribe.Columns.Add("Name");
            dtDescribe.Columns.Add("Type");
            dtDescribe.Columns.Add("Modifiers");
            dtDescribe.Columns.Add("Primary Key");
            foreach (DBColumn column in descOutput.Columns)
            {
                DataRow r = dtDescribe.NewRow();
                r["Name"]        = column.ColumnName;
                r["Type"]        = column.Type;
                r["Modifiers"]   = column.Modifiers;
                r["Primary Key"] = column.IsPrimaryKey ? "X" : "";
                dtDescribe.Rows.Add(r);
            }
            describeTable.DataSource = dtDescribe;



            ssh.Disconnect();
        }
Пример #2
0
 private bool ExistColumn(DescribeOutput destinationTabDescription, DBColumn dbColumn)
 {
     foreach (DBColumn destColumn in destinationTabDescription.Columns)
     {
         if (destColumn.ColumnName.Equals(dbColumn.ColumnName, StringComparison.InvariantCultureIgnoreCase))
         {
             return(true);
         }
     }
     return(false);
 }
Пример #3
0
        private List <DBColumn> GetMissingColumn(string table,
                                                 SshDbWrapper sourceConnection,
                                                 SshDbWrapper destinationConnection)
        {
            DescribeOutput  sourceTabDescription      = sourceConnection.Describe(table);
            DescribeOutput  destinationTabDescription = destinationConnection.Describe(table);
            List <DBColumn> missingColumns            = new List <DBColumn>();

            foreach (DBColumn col in sourceTabDescription.Columns)
            {
                if (!ExistColumn(destinationTabDescription, col))
                {
                    missingColumns.Add(col);
                }
            }
            return(missingColumns);
        }
Пример #4
0
        public DescribeOutput Describe(string tableName)
        {
            var             response        = sshClient.RunCommand(PsqlInlineCommand(String.Format("\\d {0}", tableName)));
            DescribeOutput  output          = new DescribeOutput();
            List <DBColumn> describeColumns = new List <DBColumn>();

            output.TableName = tableName;
            int    rowCounter = 0;
            string primaryKey = "";

            foreach (String line in response.Result.Split('\n'))
            {
                output.RawText += line + System.Environment.NewLine;
                if (rowCounter > 1)
                {
                    string[] spltArg = line.Split('|');
                    if (spltArg.Length > 1)
                    {
                        DBColumn newColumn = new DBColumn();
                        newColumn.ColumnName = spltArg[0].Trim();
                        newColumn.Type       = spltArg[1].Trim();
                        if (spltArg.Length > 2)
                        {
                            newColumn.Modifiers = spltArg[2].Trim();
                        }
                        describeColumns.Add(newColumn);
                    }
                    else
                    {
                        if (line.Trim().ToUpper().Contains("PRIMARY KEY,"))
                        {
                            string[] keyval = line.Split('(');
                            primaryKey = keyval[1].TrimEnd(')');
                        }
                    }
                }
                rowCounter++;
            }

            output.Columns = describeColumns;
            output.SetPrimaryKey(primaryKey);
            return(output);
        }
Пример #5
0
        public SelectOutput SelectFromTable(string table,
                                            String whereCondition,
                                            String order,
                                            String limit
                                            )
        {
            String columnList = "";


            DescribeOutput describe     = Describe(table);
            DataTable      outputTable  = new DataTable();
            SelectOutput   selectOutput = new SelectOutput();

            foreach (DBColumn column in describe.Columns)
            {
                columnList += column.ColumnName + ", ";
                outputTable.Columns.Add(column.ColumnName);
            }

            columnList = columnList.Trim().TrimEnd(',');
            if (!string.IsNullOrEmpty(whereCondition))
            {
                whereCondition = "WHERE " + whereCondition;
            }
            if (!string.IsNullOrEmpty(order))
            {
                order = "ORDER BY " + order;
            }
            if (!string.IsNullOrEmpty(limit))
            {
                limit = "LIMIT " + limit;
            }
            String writeCommand = String.Format("echo \"SELECT {0} FROM {1} {2} {3} {4};\" > {5}", columnList, table, whereCondition, order, limit, SqlFile);
            var    response     = sshClient.RunCommand(writeCommand);

            response = sshClient.RunCommand(PsqlScriptExec());

            int counter = 0;

            foreach (String line in response.Result.Split('\n'))
            {
                if (counter > 1)
                {
                    string[] listOfData = line.Split('|');
                    if (listOfData.Length > 1)
                    {
                        DataRow r = outputTable.NewRow();
                        int     i = 0;
                        foreach (DataColumn column in outputTable.Columns)
                        {
                            r[column.ColumnName] = listOfData[i].Trim();
                            i++;
                        }

                        outputTable.Rows.Add(r);
                    }
                }
                counter++;
            }

            selectOutput.Table      = outputTable;
            selectOutput.PrimaryKey = describe.PrimaryKey;
            return(selectOutput);
        }