Я попытался выполнить следующий фрагмент кода для экспорта данных (myFileName.csv):
bcp "select * from DataBase.schema.TABLE_NAME" queryout tableData.csv -c -t, , -S [server] -U [user] -P '[password(with special characters)]' > LogFile.txt
приведенный выше код работает нормально в терминале.
Напротив, я пробовал один и тот же код с помощью java.
File dir = new File("Mydirectory");
Path dataPath = Paths.get("tableData.csv");
List<String> val = new ArrayList();
val.add("bcp");
val.add("\"select * from " + [Database] + ".[Schema]." + table_name + "\"");
val.add("queryout");
val.add(dataPath.toString());
val.add("-c");
val.add("-t");
val.add(",");
val.add("-S");
val.add([server]);// ex: if Server is 10.0.0.1 then val.add("10.0.0.1");
val.add("-U");
val.add([user]); // ex: if User_name is TestA then val.add("TestA");
val.add("-P");
val.add([password(with special characters)]); // ex: if Password is [email protected]#MyPassword*& then val.add("[email protected]#MyPassword*&");
ProcessBuilder builder = new ProcessBuilder(val);
File logFile = new File("LogFile.txt");
System.out.println("BCP command :" + builder.command());
builder.redirectlogFile(logFile);
builder.directory(dir);
Process exec = builder.start();
System.out.println("BCP process completed : with errors :" + exec.waitFor());
System.out.println("BCP logFile :" + org.apache.commons.io.FileUtils.readFileToString(logFile));
Я получил следующую ошибку:
Команда BCP: [bcp, "выберите * из DataBase.schema.TABLE_NAME", queryout, tableData.csv, -c, -t,, -S, 10.0.0.1, -U, TestA, -P,! @# MyPassword * &]
Процесс BCP завершен: с ошибками: 1
BCP logFile: запуск копии... SQLState = S1000, NativeError = 0 Ошибка = [Microsoft] [Собственный клиент SQL Server 11.0] Невозможно разрешить сортировки на уровне столбца
SQLState = 37000, NativeError = 102 Ошибка = [Microsoft] [SQL Server Native Client 11.0] [SQL Server] Неверный синтаксис рядом с 'select * from DataBase.schema.TABLE_NAME".
Посмотрев на ошибку, я проверил сопоставления Server
, Database
и Table
, все кажется похожим SQL_Latin1_General_CP1_CI_AS
Технические характеристики системы:
Linux :
uname -mrs
Linux 3.10.0-327.10.1.el7.x86_64 x86_64
uname -a
Linux [domain] 3.10.0-327.10.1.el7.x86_64 #1 SMP Tue Feb 16 17:03:50 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
ODBC Driver for linux:
isql --version
unixODBC 2.3.0
odbcinst -q -d -n "SQL Server Native Client 11.0"
[SQL Server Native Client 11.0]
Description=Microsoft SQL Server ODBC Driver V1.0 for Linux
Driver=/opt/microsoft/sqlncli/lib64/libsqlncli-11.0.so.1790.0
Кто-нибудь мне поможет Что я делаю неправильно здесь.