Как использовать OUTPUT TO в Sybase с помощью C#

Я хочу извлечь некоторые таблицы из базы данных Sybase с помощью С#, и в настоящее время я пробовал использовать команду sybase, и она отлично работает. но как мне это сделать в С#?

SELECT * FROM users;
OUTPUT TO 'C:\\temp\\sample.sql' 
FORMAT TEXT

в C# мне это нравится.

 SAConnection myConnection = new SAConnection(connectionString);
 {
      myConnection.Open();
      SACommand myCommand = myConnection.CreateCommand();
      myCommand.CommandText = @"select * from users  OUTPUT TO " + "'C:\temp\sample.sql'" + " FORMAT TEXT ";
      SADataReader myDataReader = myCommand.ExecuteReader();                   
      myDataReader.Close();
      myConnection.Close();

 } 

Но я получаю сообщение об ошибке «Синтаксическая ошибка рядом с« ВЫВОДОМ »в строке 1.


person jhon doe    schedule 18.09.2017    source источник
comment
вы экспортируете данные в файл .sql? или .csv?   -  person Jeric Cruz    schedule 18.09.2017
comment
@ДжерикКруз. в файл .sql   -  person jhon doe    schedule 18.09.2017
comment
Не используйте Sybase DB, но нужно проверить одну вещь (не вашу ошибку, а, возможно, связанную с ней) — похоже, что этот код будет работать на сервере БД с использованием служебной учетной записи БД, а не на вашей рабочей станции с использованием вашей собственной учетной записи пользователя. . Имеет ли учетная запись службы, под которой запущен процесс sybase, доступ к этому пути к папке?   -  person Joel Coehoorn    schedule 18.09.2017
comment
@JoelCoehoorn В доступе к каталогу нет ошибок, единственное, что я считаю неправильным, это то, как я добавляю ВЫВОД в текст команды. Я не знаю, как мне добавить этот OUTPUT TO. чтобы заставить его работать.   -  person jhon doe    schedule 18.09.2017
comment
вы извлекаете схему таблицы или данные? потому что вы можете сделать это в .csv для извлечения данных.   -  person Jeric Cruz    schedule 18.09.2017
comment
@JericCruz в любом случае. .csv или .sql. Я хотел бы извлечь данные таблицы.   -  person jhon doe    schedule 18.09.2017


Ответы (1)


вы можете попробовать использовать оператор UNLOAD TO [filepath]

myCommand.CommandText = @"UNLOAD SELECT * FROM users TO " + "'C:\temp\sample.sql'";

Примечание: путь к файлу должен указываться в файловой системе сервера sybase, а не на стороне вашего приложения.

e.g.

веб-сервер (ваше приложение) и сервер базы данных (сервер, на котором установлена ​​sybase)

если вы установите путь к файлу C:\sample.sql, вы получите файл в каталоге C:\ вашего сервера базы данных, а не на веб-сервере.

вы можете обратиться к этому предыдущему ответу и этот документ

OUTPUT TO — это команда dbisql, а не оператор SQL, распознаваемый сервером базы данных.
— Грэм Перроу

person Jeric Cruz    schedule 18.09.2017
comment
Я хочу проголосовать за это, но у меня недостаточно репутации. - person jhon doe; 22.09.2017