|
- using Npgsql;
- using Renci.SshNet;
- using System.Data;
-
- namespace resequence_pgsql
- {
- public class PGHelper : IDisposable
- {
- string _ipaddress = "192.168.0.108";
- string _username = "mcarman";
- string _pwd = "@ng31F@rm0823262";
- string _localip = "127.0.0.1";
- uint _port = (uint)5432;
- string _connString = "Server={0};Database={1};Port={2};User Id={3};Password={4};";
- string _db = "cm";
- SshClient _client;
- ForwardedPortLocal _tunnel;
-
- public PGHelper()
- {
- _client = new SshClient(_ipaddress, _username, _pwd);
- _client.Connect();
- _tunnel = new ForwardedPortLocal(_localip, _localip, _port);
- _client.AddForwardedPort(_tunnel);
- _tunnel.Start();
- _connString = string.Format(_connString, _tunnel.BoundHost, _db, _tunnel.BoundPort, _username, _pwd);
- }
-
- public PGHelper(string ipaddress, string username, string pwd, string localip, int port, string db)
- {
- _ipaddress = ipaddress;
- _username = username;
- _pwd = pwd;
- _localip = localip;
- _port = (uint)port;
- _db = db;
- _client = new SshClient(_ipaddress, _username, _pwd);
- _client.Connect();
- _tunnel = new ForwardedPortLocal(_localip, _localip, _port);
- _client.AddForwardedPort(_tunnel);
- _tunnel.Start();
- _connString = string.Format(_connString, _tunnel.BoundHost, _db, _tunnel.BoundPort, _username, _pwd);
-
- }
- public void ResequenceTables()
- {
- if (_client.IsConnected)
- {
- try
- {
- using (NpgsqlConnection conn = new NpgsqlConnection(_connString))
- {
- conn.Open();
- NpgsqlCommand cmd = conn.CreateCommand();
- cmd.CommandType = System.Data.CommandType.Text;
- cmd.CommandText = "SELECT c.relname FROM pg_class c WHERE c.relkind = 'S' order BY c.relname;";
- DataTable tbl = new DataTable();
- NpgsqlDataAdapter adapter = new NpgsqlDataAdapter(cmd);
- adapter.Fill(tbl);
- foreach (DataRow row in tbl.Rows)
- {
- cmd.CommandText = string.Format("SELECT last_value + 1 from \"{0}\"", row[0]);
- int seqVal = Convert.ToInt32(cmd.ExecuteScalar());
- cmd.CommandText = string.Format("ALTER SEQUENCE public.\"{0}\" RESTART WITH {1};", row[0], seqVal);
- cmd.ExecuteScalar();
- }
- }
- }
- catch { throw; }
- }
- else { throw new Exception("There was a problem with your ssh connection."); }
- }
-
-
- private bool isDisposed = false;
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
- protected bool Disposed { get; private set; }
- protected virtual void Dispose(bool disposing)
- {
- if (!isDisposed)
- {
- if (disposing)
- {
- if (_client != null) _client.Dispose();
- }
- }
- isDisposed = true;
- }
- }
- }
|