Definition at line 80 of file shp2pgsql-cli.c.
81{
84 char *header, *footer, *record;
85 int c;
86 int ret, i;
87
88#ifdef ENABLE_NLS
89#ifdef PGSQL_LOCALEDIR
90 setlocale (LC_ALL, "");
91 bindtextdomain (PACKAGE, PGSQL_LOCALEDIR);
92 textdomain (PACKAGE);
93#endif
94#endif
95
96
97 if (argc == 1)
98 {
100 exit(0);
101 }
102
103
106
107
108 while ((c =
pgis_getopt(argc, argv,
"-?acdeg:ikm:nps:t:wDGIN:ST:W:X:Z")) != EOF)
109 {
110
111 if ('-' == c)
112 break;
113
114 switch (c)
115 {
116 case 'c':
117 case 'd':
118 case 'a':
119 case 'p':
121 break;
122
123 case 'D':
125 break;
126
127 case 'G':
129 break;
130
131 case 'Z':
133 break;
134
135 case 'S':
137 break;
138
139 case 's':
141 {
143 if (ptr)
144 {
145 *ptr++ = '\0';
147 sscanf(ptr,
"%d", &config->
sr_id);
148 }
149 else
150 {
151
153 }
154 }
155 else
156 {
157
158 fprintf(stderr, "The -s parameter must be specified in the form [FROM_SRID:]TO_SRID\n");
159 exit(1);
160 }
161 break;
162 case 'g':
164 break;
165 case 'm':
167 break;
168
169 case 'k':
171 break;
172
173 case 'i':
175 break;
176
177 case 'I':
179 break;
180
181 case 'w':
183 break;
184
185 case 'n':
187 break;
188
189 case 'W':
192 break;
193
194 case 'N':
196 {
197 case 'a':
199 break;
200 case 'i':
202 break;
203 case 's':
205 break;
206 default:
207 fprintf(stderr, "Unsupported NULL geometry handling policy.\nValid policies: insert, skip, abort\n");
208 exit(1);
209 }
210 break;
211
212 case 't':
214 {
216 }
218 {
220 }
222 {
224 }
226 {
228 }
229 else
230 {
231 fprintf(stderr,
"Unsupported output type: %s\nValid output types are 2D, 3DZ, 3DM and 4D\n",
pgis_optarg);
232 exit(1);
233 }
234 break;
235
236 case 'T':
238 break;
239
240 case 'X':
242 break;
243
244 case 'e':
246 break;
247
248 case '?':
250 exit(0);
251
252 default:
254 exit(0);
255 }
256 }
257
258
260 {
261 fprintf(stderr, "Invalid argument combination - cannot use both -D and -e\n");
262 exit(1);
263 }
264
265
267 {
270 }
271 else
272 {
274 exit(0);
275 }
276
277
279 {
281 char *chrptr = strchr(strptr, '.');
282
283
284 if (chrptr)
285 {
286 if ( chrptr == strptr )
287 {
288
290 exit(0);
291 }
292
293 *chrptr = '\0';
294
295 config->
schema = strdup(strptr);
296 config->
table = strdup(chrptr+1);
297 }
298 else
299 {
300 config->
table = strdup(strptr);
301 }
302 }
303
304
305
307 {
308 char *shp_file = strdup(config->
shp_file);
309 char *ptr;
310
311
312 for ( ptr = shp_file + strlen(shp_file); ptr > shp_file; ptr-- )
313 {
314 if ( *ptr == '.' )
315 {
316 *ptr = '\0';
317 break;
318 }
319 }
320
321
322 for ( ptr = shp_file + strlen(shp_file); ptr > shp_file; ptr-- )
323 {
324 if ( *ptr == '/' || *ptr == '\\' )
325 {
326 ptr++;
327 break;
328 }
329 }
330 config->
table = strdup(ptr);
332 }
333
334
335
337 {
342 }
343
344
346
347
350 {
351 fprintf(stderr,
"%s\n", state->
message);
352
354 exit(1);
355 }
356
357
359 {
361 fprintf(stderr,
"Postgis type: %s[%d]\n", state->
pgtype, state->
pgdims);
362 }
363
364
367 {
368 fprintf(stderr,
"%s\n", state->
message);
369
371 exit(1);
372 }
373
374 printf("%s", header);
376
377
379 {
380
381
383 {
386 {
387 fprintf(stderr,
"%s\n", state->
message);
388
390 exit(1);
391 }
392
393 printf("%s", header);
395 }
396
397
399 {
401
402 switch (ret)
403 {
405
406 printf("%s\n", record);
408 break;
409
411
412 fprintf(stderr,
"%s\n", state->
message);
413 exit(1);
414 break;
415
417
418 fprintf(stderr,
"%s\n", state->
message);
419 printf("%s\n", record);
421 break;
422
424
425 break;
426
428
429 break;
430 }
431 }
432
433
435 printf("\\.\n");
436
437 }
438
439
442 {
443 fprintf(stderr,
"%s\n", state->
message);
444
446 exit(1);
447 }
448
449 printf("%s", footer);
451
452
453
455
456
461
462 return 0;
463}
int pgis_getopt(int argc, char **argv, char *opts)
const char SHPAPI_CALL1 * SHPTypeName(int nSHPType);const char SHPAPI_CALL1(*) SHPPartTypeName(int nPartType
int ShpLoaderGetRecordCount(SHPLOADERSTATE *state)
void ShpLoaderDestroy(SHPLOADERSTATE *state)
SHPLOADERSTATE * ShpLoaderCreate(SHPLOADERCONFIG *config)
int ShpLoaderGetSQLCopyStatement(SHPLOADERSTATE *state, char **strheader)
int ShpLoaderOpenShape(SHPLOADERSTATE *state)
int ShpLoaderGenerateSQLRowStatement(SHPLOADERSTATE *state, int item, char **strrecord)
void set_loader_config_defaults(SHPLOADERCONFIG *config)
int ShpLoaderGetSQLFooter(SHPLOADERSTATE *state, char **strfooter)
int ShpLoaderGetSQLHeader(SHPLOADERSTATE *state, char **strheader)
#define POLICY_NULL_ABORT
#define SHPLOADERRECISNULL
#define POLICY_NULL_INSERT
#define SHPLOADERRECDELETED
char * column_map_filename
char message[SHPLOADERMSGLEN]
References shp_loader_config::analyze, shp_loader_config::column_map_filename, shp_loader_state::config, shp_loader_config::createindex, shp_loader_config::dump_format, shp_loader_config::encoding, shp_loader_config::force_output, FORCE_OUTPUT_2D, FORCE_OUTPUT_3DM, FORCE_OUTPUT_3DZ, FORCE_OUTPUT_4D, shp_loader_config::forceint4, free(), shp_loader_config::geo_col, shp_loader_config::geography, shp_loader_config::idxtablespace, malloc(), shp_loader_state::message, shp_loader_config::null_policy, shp_loader_config::opt, shp_loader_state::pgdims, pgis_getopt(), pgis_optarg, pgis_optind, shp_loader_state::pgtype, POLICY_NULL_ABORT, POLICY_NULL_INSERT, POLICY_NULL_SKIP, shp_loader_config::quoteidentifiers, shp_loader_config::readshape, shp_loader_config::schema, set_loader_config_defaults(), shp_loader_config::shp_file, shp_loader_config::shp_sr_id, shp_loader_state::shpfiletype, ShpLoaderCreate(), ShpLoaderDestroy(), SHPLOADERERR, ShpLoaderGenerateSQLRowStatement(), ShpLoaderGetRecordCount(), ShpLoaderGetSQLCopyStatement(), ShpLoaderGetSQLFooter(), ShpLoaderGetSQLHeader(), SHPLOADEROK, ShpLoaderOpenShape(), SHPLOADERRECDELETED, SHPLOADERRECISNULL, SHPLOADERWARN, SHPTypeName(), shp_loader_config::simple_geometries, shp_loader_config::sr_id, strtolower(), shp_loader_config::table, shp_loader_config::tablespace, usage(), shp_loader_config::use_wkt, and shp_loader_config::usetransaction.