[gdal-dev] Another Join issue with OGR/ODBC

Yewondwossen Assefa yassefa at dmsolutions.ca
Wed Oct 21 15:30:26 EDT 2009


Frank Warmerdam wrote:
> Yewondwossen Assefa wrote:
>> Hi all,
>>
>> I am into some issues when trying to do a  join using a shape file as 
>> a primary table and an ODBC (sql server 2005) connection as the 
>> secondary table.
>>
>> The issue has to do with the schema name.
>>
>> The following query (with a schema name: imsv7) works as expected:
>>  - ogrinfo ODBC:sa/ttt at my_db -sql "SELECT * FROM imsv7.COMPSMN WHERE 
>> COMPKEY=23533"
>>
>> This same query without a schema does not work  (which is what  I 
>> expected):
>>    - ogrinfo ODBC:sa/ttt at my_db -sql "SELECT * FROM COMPSMN WHERE 
>> COMPKEY=23533"
>>
>> My issue is that I need to give the schema name when doing a join but 
>> don't see how I can do that. Here is the  join statement:
>>
>>  - ogrinfo f:/msapps/ttt/sqlserver/Sewer_Manholes_20090818.shp -sql 
>> "SELECT *  FROM Sewer_Manholes_20090818 shp LEFT JOIN 
>> 'ODBC:sa/ttt at my_db'.COMPSMN ON shp.COMPKEY = COMPSMN.COMPKEY  where 
>> COMPKEY = 23533"
>
> Assefa,
>
> The core problem is that when you open the ODBC datasource directly,
> your SQL gets sent to SQLServer but when you open the shapefile, the
> SQL gets parsed and processed by OGR which knows nothing about schemas
> and can only operate on features from the joined datasource that appears
> as regular layers on it.
>
> So, when you do "ogrinfo ODBC:sa/tt at my_db" do you see a layer 
> corresponding
> to imsv7?  If not, you cannot join to it properly.
>
I do not see any thing refering to imsv7. I only see COMPSMN as part of 
the layer lists.
> It *might* be possible to include imsv7.compsmn as a table name in the
> ODBC datasource name.  Something like:
>
>   ODBC:sa/tt at my_db:imsv7.compsmn
>
> If this works this table should be translated into a layer you can join
> to.
>
 I have tried to add the schema and layer name but was not successful in 
getting a proper join.
> In theory you could also wrap the ODBC datasource in a VRT datasource
> using <SrcSQL> to ensure that the compsmn features end up as proper
> features in a proper layer but I'm generally nervous about adding
> this many layers of complexity, and it is essentially sure that if
> you do this the join performance will be terrible.
>
 I understand that:. I initially tested with vrt layer  but the join 
took extremely long time (3-4 minutes with ogrinfo, indexed on the join 
key) on about 3000 features in the shape and the 2700 in the database.

Thanks a lot for taking the time  to look into this.
> Best regards,


-- 
----------------------------------------------------------------
Assefa Yewondwossen           
Software Analyst   

Email: assefa at dmsolutions.ca    
http://www.dmsolutions.ca/

Phone: (613) 565-5056 (ext 14)
Fax:   (613) 565-0925
----------------------------------------------------------------




More information about the gdal-dev mailing list