【问题标题】:OGR2OGR with MS SQL on Ubuntu 16.04在 Ubuntu 16.04 上使用 MS SQL 的 OGR2OGR
【发布时间】:2016-12-20 13:30:45
【问题描述】:

我需要从 Ubuntu Server 16.04 访问带有 OGR2OGR 的 Microsoft SQL Server。它在 Microsoft 上运行,所以基本设置很好。

我的问题是,当我运行我的 OGR2OGR 命令时(在使用 sudo apt-get install gdal-bin 安装 GDAL 之后):

ogr2ogr -overwrite -f MSSQLSpatial "MSSQL:server=tcp:<DATABASE_SERVER>,<PORT>;database=<DATABASE_NAME>;uid=<USER>;Pwd=<PASSWORD>;" "<IMPORT PATH FILE>" -nln "<TABLE NAME>" -progress

我得到错误:

错误 1:无法初始化与 MSSQL 的服务器的连接:“DATABASE_SERVER”; [unixODBC][驱动程序管理器]无法打开库“SQL Server”:找不到文件 尝试从可用驱动程序列表中指定连接字符串中的驱动程序:

我尝试根据this指令安装Microsoft ODBC Driver for SQL Server,但安装gdal时无法安装。错误是:

无法安装某些软件包。这可能意味着您有 请求不可能的情况,或者如果您使用的是不稳定的 一些必需的包尚未创建的分发 或被移出 Incoming。 以下信息可能有助于解决这种情况:

以下包具有未满足的依赖关系: msodbcsql :取决于:unixodbc-utf16 (>= 2.3.1-1) 但不会安装 E: 无法纠正问题,您持有破损的包裹。

一段时间后我设法安装了 Microsoft ODBC 驱动程序,但这意味着要删除 GDAL。所以我可以拥有 GDAL 或 Microsoft ODBC 驱动程序。有没有办法解决这个问题?

感谢您的帮助!

更新(2017.01.03):我找到了以下解决方案,我还在 MSDN 博客上评论了相应的文章(到目前为止没有回复)here

如果还没有,请安装 UnixODBC

sudo apt-get install unixodbc unixodbc-dev

从某处下载:msodbcsql-11.0.2270.0.tar.gz(使用 msodbcsql-13.x.x.x.tar.gz 可能会更好,但我找不到它)和

tar xvfz msodbcsql-11.0.2270.0.tar.gz
cd msodbcsql-11.0.2270.0
ldd lib64/libmsodbcsql-11.0.so.2270.0

如果缺少依赖项安装它们,在我的情况下可以这样做:(除了 apt-get install 之外的所有内容都是通过创建链接来修复文件的命名:)

sudo apt-get install libssl1.0.0 libssl-dev
cd /lib/x86_64-linux-gnu
sudo ln -s libssl.so.1.0.0 libssl.so.10
sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10

安装和清理:

sudo bash ./install.sh install --force --accept-license

rm -rf /tmp/msodbcubuntu

如果使用它的工具找不到驱动程序(例如 ogr2ogr 或 pyodbc),请编辑 /etc/odbcinst.ini 并为 [SQL Server] 创建一个连接器

[SQL Server]
Description=Microsoft ODBC Driver 11 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-11.0.so.2270.0
Threading=1
UsageCount=2

【问题讨论】:

    标签: sql-server gis ubuntu-16.04 gdal ogr2ogr


    【解决方案1】:

    无耻来自:https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15

    sudo su 
    curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
    curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
    sudo apt-get update
    sudo ACCEPT_EULA=Y apt-get install msodbcsql17
    

    验证

    ogr2ogr --formats
    

    然后应该列出:

    MSSQLSpatial -vector- (rw+): Microsoft SQL Server Spatial Database
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-04
      • 2017-11-04
      • 2017-05-02
      相关资源
      最近更新 更多