3636from processing .parameters .ParameterVector import ParameterVector
3737from processing .parameters .ParameterString import ParameterString
3838from processing .parameters .ParameterSelection import ParameterSelection
39+ from processing .parameters .ParameterTableField import ParameterTableField
3940from processing .tools import dataobjects
4041import postgis_utils
4142
@@ -51,6 +52,7 @@ class ImportIntoPostGIS(GeoAlgorithm):
5152 GEOMETRY_COLUMN = 'GEOMETRY_COLUMN'
5253 LOWERCASE_NAMES = 'LOWERCASE_NAMES'
5354 DROP_STRING_LENGTH = 'DROP_STRING_LENGTH'
55+ PRIMARY_KEY = 'PRIMARY_KEY'
5456
5557 def getIcon (self ):
5658 return QIcon (os .path .dirname (__file__ ) + '/../../images/postgis.png' )
@@ -62,6 +64,7 @@ def processAlgorithm(self, progress):
6264 createIndex = self .getParameterValue (self .CREATEINDEX )
6365 convertLowerCase = self .getParameterValue (self .LOWERCASE_NAMES )
6466 dropStringLength = self .getParameterValue (self .DROP_STRING_LENGTH )
67+ primaryKeyField = self .getParameterValue (self .PRIMARY_KEY )
6568 settings = QSettings ()
6669 mySettings = '/PostgreSQL/connections/' + connection
6770 try :
@@ -91,7 +94,10 @@ def processAlgorithm(self, progress):
9194
9295 uri = QgsDataSourceURI ()
9396 uri .setConnection (host , str (port ), database , username , password )
94- uri .setDataSource (schema , table , geomColumn , '' )
97+ if primaryKeyField :
98+ uri .setDataSource (schema , table , geomColumn , '' , primaryKeyField )
99+ else :
100+ uri .setDataSource (schema , table , geomColumn , '' )
95101
96102 options = {}
97103 if overwrite :
@@ -137,6 +143,8 @@ def defineCharacteristics(self):
137143 self .addParameter (ParameterString (self .SCHEMA , 'Schema (schema name)' ))
138144 self .addParameter (ParameterString (self .TABLENAME , 'Table to import to'
139145 ))
146+ self .addParameter (ParameterTableField (self .PRIMARY_KEY , 'Primary key field' ,
147+ self .INPUT , optional = True ))
140148 self .addParameter (ParameterString (self .GEOMETRY_COLUMN , 'Geometry column' , 'the_geom'
141149 ))
142150 self .addParameter (ParameterBoolean (self .OVERWRITE , 'Overwrite' , True ))
0 commit comments