Выполнить скрипт postgres с npgsql

У меня есть скрипт (* .sql), который создает таблицы. Я использую Visual Studio 2010 с npgsql для доступа к базе данных postgres.

Могу ли я выполнить сценарий из внутреннего кода?

Это код, который я пробовал:

string sqlConnectionString = @"myconnection";

FileInfo file = new FileInfo(@"myfile.sql");

string script = file.OpenText().ReadToEnd();

NpgsqlConnection conn = new NpgsqlConnection(sqlConnectionString);

Server server = new Server(new ServerConnection(conn));

server.ConnectionContext.ExecuteNonQuery(script);
file.OpenText().Close();

Но Visual Studio не распознает Server.


person Za7pi    schedule 23.05.2014    source источник
comment
вы можете сохранить его как хранимую процедуру в своей базе данных и вызвать ее из кода позади   -  person Banana    schedule 23.05.2014
comment
Нет, потому что я собираюсь выполнять во многих разных базах данных. Я предпочитаю запускать из приложения   -  person Za7pi    schedule 23.05.2014
comment
вы можете сохранить свой запрос в текстовом файле и загрузить его как строку, выполняемую в вашей базе данных   -  person Banana    schedule 23.05.2014
comment
У меня есть текстовый файл, я пытался перевести это: stackoverflow.com/questions/650098/ к соединителю npgsql, но не повезло ...   -  person Za7pi    schedule 23.05.2014
comment
не могли бы вы опубликовать полный код, который вы пробовали? замаскируйте IP-адреса и другую личную информацию, я просто хочу увидеть логику, если возможно, пожалуйста. также попробуйте выполнить простой запрос на вставку, чтобы исключить возможность сбоя вашего скрипта   -  person Banana    schedule 23.05.2014
comment
Я разместил свой первый пост. Спасибо!   -  person Za7pi    schedule 23.05.2014
comment
поставить точку останова, какой объект не инициализируется первым? server, new ServerConnection(conn), conn или script?   -  person Banana    schedule 23.05.2014
comment
Я получил ответ. Посмотрите на ответ внизу. Большое тебе спасибо!!   -  person Za7pi    schedule 23.05.2014
comment
В будущем, пожалуйста, старайтесь всегда включать любой соответствующий код, точный текст сообщений об ошибках, ваши версии и т. Д. Тем не менее, +1 за полезный самостоятельный ответ.   -  person Craig Ringer    schedule 23.07.2014
comment
Хорошо спасибо за советы   -  person Za7pi    schedule 23.07.2014


Ответы (1)


Я понял. Вот ответ:

NpgsqlConnection _connPg = new NpgsqlConnection("yourconnectionstring"));

FileInfo file = new FileInfo(HttpContext.Current.Server.MapPath("DatabaseSchema.sql"));
string script = file.OpenText().ReadToEnd();
var m_createdb_cmd = new NpgsqlCommand(script, _connPg);
_connPg.Open();
m_createdb_cmd.ExecuteNonQuery();
_connPg.Close();
person Za7pi    schedule 23.05.2014
comment
Удалите лишнюю закрывающую скобку в new NpgsqlConnection("yourconnectionstring")). - person Anis Alibegić; 10.04.2018