나는 사용해야한다박푸명령줄에서 데이터를 내보내기 위한 도구SQL 서버Red Hat 서버의 파일에 대한 데이터베이스입니다. 나는 (분명히) 유효한 진술을 사용하고 있지만박푸어떤 종류의 출력/결과도 생성하지 않습니다. 그러나 누락되거나 잘못된 매개변수가 포함된 명령문을 실행하면 해당 오류가 표시됩니다. 이 문제의 원인(예: 설치 결함, 부적절한 사용)을 찾고 있습니다.박푸, 권한 부족 또는 기타 알려진 충돌) 및 해결 방법을 알아보세요.
bcp 문:
bcp fully_qualified_table_name out ./data.txt -c -S server -U user -P password
bcp 사용법:
usage: /opt/microsoft/bin/bcp {dbtable | query} {in | out | queryout | format} datafile
[-m maxerrors] [-f formatfile] [-e errfile]
[-F firstrow] [-L lastrow] [-b batchsize]
[-n native type] [-c character type] [-w wide character type]
[-N keep non-text native] [-q quoted identifier]
[-t field terminator] [-r row terminator]
[-a packetsize] [-K application intent]
[-S server name or DSN if -D provided] [-D treat -S as DSN]
[-U username] [-P password]
[-T trusted connection] [-v version] [-R regional enable]
[-k keep null values] [-E keep identity values]
[-h "load hints"] [-d database name]
bcp 버전:
BCP - Bulk Copy Program for Microsoft SQL Server.
Copyright (C) Microsoft Corporation. All Rights Reserved.
Version: 11.0.2270.0
SQL Server 버전( SELECT @@VERSION
):
Microsoft SQL Server 2012 - 11.0.5058.0 (X64)
May 14 2014 18:34:29
Copyright (c) Microsoft Corporation
Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
분배하다:
Red Hat Enterprise Linux 6.7 (KornShell).
해당 오류 메시지가 포함된 잘못된 설명(예)
bcp THAT_TUB_ACE.oh_nerd.table_name out ./data.txt -c -S sr._bear -U you_sr. -P pass_sword
SQLState = S1T00, NativeError = 0
Error = [unixODBC][Microsoft][ODBC Driver 11 for SQL Server]Login timeout expired
SQLState = 08001, NativeError = 11001
Error = [unixODBC][Microsoft][ODBC Driver 11 for SQL Server]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.
SQLState = 08001, NativeError = 11001
Error = [unixODBC][Microsoft][ODBC Driver 11 for SQL Server]TCP Provider: Error code 0x2AF9
...
bcp fully_qualified_table_name ./data.txt -c -S valid_server -U valid_user -P bad_word
bcp fully_qualified_table_name out ./data.txt -c -S valid_server -U valid_user -P bad_word
SQLState = 28000, NativeError = 18456
Error = [unixODBC][Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Login failed for user 'valid_user'.
일반화.
목표는 다음 구문(또는 유사한 구문)을 사용하여 데이터 파일을 생성하는 것입니다.
bcp fully_qualified_table_name out ./data.txt -c -S server -U user -P password
사실은 다음과 같습니다
- 실행할 때 유효박푸선언창에는 아무 것도 없고(출력 없음) 데이터 파일도 생성되지 않습니다.
- 옵션을 사용할 수 없습니다
-T
(통합 보안으로 신뢰할 수 있는 연결 사용).박푸그래서 지정해야 해요서버, 사용자 및 비밀번호. - 매우 간단한 작은 테이블에서 옵션을 시도했지만
queryout
여전히 운이 없습니다. - 자격 증명은 유효하며
sqlcmd
다음과 같은 명령을 사용하여 성공적으로 테스트했습니다sqlcmd -S server -U user -P password -Q 'SELECT * FROM really_small_table'
. - 이것박푸아래 진술"해당 오류 메시지가 포함된 잘못된 설명(예)"이 질문의 일부는 잘못된 진술의 예일 뿐입니다.박푸실제로 뭔가를 수행하지만 예상한 결과를 제공합니다.
답변1
Microsoft ODBC 설치 프로세스가 에 넣은 Debian 플랫폼을 발견했습니다 libodbc.so
. /usr/lib64
이는 라이브러리의 예상 위치가 아니므로 bcp
찾을 수 없습니다. 그러나 필요한 라이브러리를 찾을 수 없다는 메시지를 표시하는 대신 그냥 종료됩니다.
데비안 솔루션. 귀하의 상황도 비슷할 것입니다.
설치 프로그램이 있는 위치를 찾으십시오
libodbc.so
.find / -type f -name libodbc.so
해당 디렉토리를 새 파일에 추가합니다
/etc/ld.so.conf.d/odbc.conf
. 내가 이 이름을 만들었고 내 시스템에는/etc/ld.so.conf.d
다음이 포함됩니다/etc/ld.so.conf
.# Required but not documented by MS ODBC installation for SQL Server /usr/lib64
ldconfig
라이브러리 위치 목록을 업데이트하려면 실행하세요 .재시도
bcp
명령
2단계와 3단계를 수행하려면 루트 사용자여야 합니다. SQL Server 라이브러리를 성공적으로 설치했다면 이것이 큰 문제는 아니라고 생각합니다.