[me@mapr001 examples]$ cat simple-bcp-tsv2mssql.sh
#!/bin/bash
TO_SERVER_ODBCDS="-D -S 'ODBC Driver 17 for SQL Server'"
TO_SERVER_IP="-S 172.17.9.29"
DB="DB_ML"
TABLE="bcp_test"
USER=""
PASSWORD=""
DATAFILE="./data/simple-rows.headless.tsv"
read -r -p "Enter username: " USER
read -r -s -p "Enter user password: " PASSWORD
echo -e "\nConnecting with BCP utility as $USER..."
/opt/mssql-tools/bin/bcp "$TABLE" in "$DATAFILE" \
"$TO_SERVER_DNS" \
-U "$USER" \
-P "$PASSWORD" \
-d "$DB" \
-c \
-t "'\t'"
并且正在抛出(似乎是误导性的)错误
[me@mapr001 examples]$ ./simple-bcp-tsv2mssql.sh
Enter username: me
Enter user password:
Connecting with BCP utility as me...
/opt/mssql-tools/bin/bcp: unknown option
usage: /opt/mssql-tools/bin/bcp {dbtable | query} {in | out | queryout | format} datafile
[-m maxerrors] [-f formatfile] [-e errfile]
...
真的应该把重点放在
:
[me@mapr001 examples]$ bcp bcp_test in ./data/simple-rows.headless.tsv -D -S MyMSSQLServer -U me -P mypassword -d DB_ML -c -t '\t'
SQLState = 28000, NativeError = 18456
Error = [unixODBC][Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user 'me'.
这台机器上的/etc/odbc/odbc文件看起来像
# Referencing some of the ODBC setup steps here: https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-SQL-Server-from-RHEL-6-or-Centos-7
# Prepare a temp file for defining the DSN to your database server
vi /home/user/odbcadd.txt
[MyMSSQLServer]
Driver = ODBC Driver 17 for SQL Server
Description = My MS SQL Server
Trace = No
Server = 172.17.9.29
# register the SQL Server database DSN information in /etc/odbc.ini
sudo odbcinst -i -s -f /home/me/odbcadd.txt -l
[me@mapr001 examples]$ cat /etc/odbc.ini
[MyMSSQLServer]
Driver=ODBC Driver 17 for SQL Server ------------
Description=My MS SQL Server |
Trace=No |
Server=172.17.9.29 |
|
[MyMSSQLServer_ML] |
Driver=ODBC Driver 17 for SQL Server |
Description=My SQL Server (ML DB) |
Tracec=No |
Server=172.17.9.29 |
Database=DB_ML |
|
|
[me@mapr001 examples]$ cat /etc/odbcinst.ini |
[PostgreSQL] |
Description=ODBC for PostgreSQL |
Driver=/usr/lib/psqlodbcw.so |
Setup=/usr/lib/libodbcpsqlS.so |
Driver64=/usr/lib64/psqlodbcw.so |
Setup64=/usr/lib64/libodbcpsqlS.so |
FileUsage=1 |
|
[MySQL] |
Description=ODBC for MySQL |
Driver=/usr/lib/libmyodbc5.so |
Setup=/usr/lib/libodbcmyS.so |
Driver64=/usr/lib64/libmyodbc5.so |
Setup64=/usr/lib64/libodbcmyS.so |
FileUsage=1 |
|
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.2.so.0.1
UsageCount=1
[me@mapr001 ~]# odbcinst -q -d -n "ODBC Driver 17 for SQL Server"
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.2.so.0.1
UsageCount=1
[me@mapr001 ~]# odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /etc/odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
Active Directory
我使用的凭据登录到我试图连接到的SQL服务器所在的远程Windows计算机),但我没有设置此类内容的经验,此时我对如何操作(将继续研究和调试)有点不知所措。关于如何进一步调试或修复问题的任何建议将不胜感激。