in mssqlscripter/argparser.py [0:0]
def parse_arguments(args):
"""
Initialize parser with scripter options.
"""
parser = argparse.ArgumentParser(
prog=u'mssql-scripter',
description=u'Microsoft SQL Server Scripter Command Line Tool. ' +
'Version {}'.format(mssqlscripter.__version__))
group_connection_options = parser.add_mutually_exclusive_group()
group_connection_options.add_argument(
u'--connection-string',
dest=u'ConnectionString',
metavar=u'',
help=u'Connection string of database to script. If connection string and server are not supplied, defaults to value in environment variable MSSQL_SCRIPTER_CONNECTION_STRING.')
group_connection_options.add_argument(
u'-S', u'--server',
dest=u'Server',
metavar=u'',
help=u'Server name.')
parser.add_argument(
u'-d', u'--database',
dest=u'Database',
metavar=u'',
help=u'Database name.')
parser.add_argument(
u'-U', u'--user',
dest=u'UserId',
metavar=u'',
help=u'Login ID for server.')
parser.add_argument(
u'-P', u'--password',
dest=u'Password',
metavar=u'',
help=u'If not supplied, defaults to value in environment variable MSSQL_SCRIPTER_PASSWORD.')
# Basic parameters.
parser.add_argument(
u'-f', u'--file-path',
dest=u'FilePath',
metavar=u'',
default=None,
help=u'File to script out to or directory name if scripting file per object.')
parser.add_argument(
u'--file-per-object',
dest=u'ScriptDestination',
action=u'store_const',
const=u'ToFilePerObject',
default=u'ToSingleFile',
help=u'By default script to a single file. If supplied and given a directory for --file-path, script a file per object to that directory.')
group_type_of_data = parser.add_mutually_exclusive_group()
group_type_of_data.add_argument(
u'--data-only',
dest=u'TypeOfDataToScript',
action=u'store_const',
const=u'DataOnly',
default=u'SchemaOnly',
help=u'By default only the schema is scripted. if supplied, generate scripts that contains data only.')
group_type_of_data.add_argument(
u'--schema-and-data',
dest=u'TypeOfDataToScript',
action=u'store_const',
const=u'SchemaAndData',
default=u'SchemaOnly',
help=u'By default only the schema is scripted. if supplied, generate scripts that contain schema and data.')
group_create_drop = parser.add_mutually_exclusive_group()
group_create_drop.add_argument(
u'--script-create',
dest=u'ScriptCreateDrop',
action=u'store_const',
const=u'ScriptCreate',
default=u'ScriptCreate',
help=u'Script object CREATE statements.')
group_create_drop.add_argument(
u'--script-drop',
dest=u'ScriptCreateDrop',
action=u'store_const',
const=u'ScriptDrop',
default=u'ScriptCreate',
help=u'Script object DROP statements.')
group_create_drop.add_argument(
u'--script-drop-create',
dest=u'ScriptCreateDrop',
action=u'store_const',
const=u'ScriptCreateDrop',
default=u'ScriptCreate',
help=u'Script object CREATE and DROP statements.')
parser.add_argument(
u'--target-server-version',
dest=u'ScriptCompatibilityOption',
choices=[
'2005',
'2008',
'2008R2',
'2012',
'2014',
'2016',
'vNext',
'AzureDB',
'AzureDW'],
default=u'2016',
help=u'Script only features compatible with the specified SQL Version.')
parser.add_argument(
u'--target-server-edition',
dest=u'TargetDatabaseEngineEdition',
choices=[
u'Standard',
u'Personal',
u'Express',
u'Enterprise',
u'Stretch'],
default=u'Enterprise',
help=u'Script only features compatible with the specified SQL Server database edition.')
parser.add_argument(
u'--include-objects',
dest=u'IncludeObjects',
nargs=u'*',
type=str,
metavar=u'',
help=u'Database objects to include in script.')
parser.add_argument(
u'--exclude-objects',
dest=u'ExcludeObjects',
nargs=u'*',
type=str,
metavar=u'',
help=u'Database objects to exclude from script.')
parser.add_argument(
u'--include-schemas',
dest=u'IncludeSchemas',
nargs=u'*',
type=str,
metavar=u'',
help=u'Database objects of this schema to include in script.')
parser.add_argument(
u'--exclude-schemas',
dest=u'ExcludeSchemas',
nargs=u'*',
type=str,
metavar=u'',
help=u'Database objects of this schema to exclude from script.')
parser.add_argument(
u'--include-types',
dest=u'IncludeTypes',
nargs=u'*',
type=str,
metavar=u'',
help=u'Database objects of this type to include in script.')
parser.add_argument(
u'--exclude-types',
dest=u'ExcludeTypes',
nargs=u'*',
type=str,
metavar=u'',
help=u'Database objects of this type to exclude from script.')
# General boolean Scripting Options
parser.add_argument(
u'--ansi-padding',
dest=u'ScriptAnsiPadding',
action=u'store_true',
default=False,
help=u'Generates ANSI Padding statements.')
parser.add_argument(
u'--append',
dest=u'AppendToFile',
action=u'store_true',
default=False,
help=u'Append script to file.')
parser.add_argument(
u'--check-for-existence',
dest=u'IncludeIfNotExists',
action=u'store_true',
default=False,
help=u'Check that an object with the given name exists before dropping or altering or that an object with the given name does not exist before creating.')
parser.add_argument(
u'-r',
u'--continue-on-error',
dest=u'ContinueScriptingOnError',
action=u'store_true',
default=False,
help=u'Continue scripting on error.')
parser.add_argument(
u'--convert-uddts',
dest=u'ConvertUDDTToBaseType',
action=u'store_true',
default=False,
help=u'Convert user-defined data types to base types.')
parser.add_argument(
u'--include-dependencies',
dest=u'GenerateScriptForDependentObjects',
action=u'store_true',
default=False,
help=u'Generate script for the dependent objects for each object scripted.')
parser.add_argument(
u'--exclude-headers',
dest=u'IncludeDescriptiveHeaders',
action=u'store_false',
default=True,
help=u'Exclude descriptive headers for each object scripted.')
parser.add_argument(
u'--constraint-names',
dest=u'IncludeSystemConstraintNames',
action=u'store_true',
default=False,
help=u'Include system constraint names to enforce declarative referential integrity.')
parser.add_argument(
u'--unsupported-statements',
dest=u'IncludeUnsupportedStatements',
action=u'store_true',
default=False,
help=u'Include statements in the script that are not supported on the target SQL Server Version.')
parser.add_argument(
u'--disable-schema-qualification',
dest=u'SchemaQualify',
action=u'store_false',
default=True,
help=u'Do not prefix object names with the object schema.')
parser.add_argument(
u'--bindings',
dest=u'Bindings',
action=u'store_true',
default=False,
help=u'Script options to set binding options.')
parser.add_argument(
u'--collation',
dest=u'Collation',
action=u'store_true',
default=False,
help=u'Script the objects that use collation.')
parser.add_argument(
u'--exclude-defaults',
dest=u'Default',
action=u'store_false',
default=True,
help=u'Do not script the default values.')
parser.add_argument(
u'--exclude-extended-properties',
dest=u'ScriptExtendedProperties',
action=u'store_false',
default=True,
help=u'Exclude extended properties for each object scripted.')
parser.add_argument(
u'--logins',
dest=u'ScriptLogins',
action=u'store_true',
default=False,
help=u'Script all logins available on the server, passwords will not be scripted.')
parser.add_argument(
u'--object-permissions',
dest=u'ScriptObjectLevelPermissions',
action=u'store_true',
default=False,
help=u'Generate object-level permissions.')
parser.add_argument(
u'--owner',
dest=u'ScriptOwner',
action=u'store_true',
default=False,
help=u'Script owner for the objects.')
parser.add_argument(
u'--exclude-use-database',
dest=u'ScriptUseDatabase',
action=u'store_false',
default=True,
help=u'Do not generate USE DATABASE statement.')
parser.add_argument(
u'--statistics',
dest=u'ScriptStatistics',
action=u'store_const',
const=u'ScriptStatsAll',
default=u'ScriptStatsNone',
help=u'Script all statistics.')
parser.add_argument(
u'--database-engine-type',
dest=u'TargetDatabaseEngineType',
# This parameter is determined based on engine edition and version in
# the background. User cannot select it.
action=u'store_const',
const=u'SingleInstance',
default=u'SingleInstance',
help=argparse.SUPPRESS)
# Table/View Options
parser.add_argument(
u'--change-tracking',
dest=u'ScriptChangeTracking',
action=u'store_true',
default=False,
help=u'Script the change tracking information.')
parser.add_argument(
u'--exclude-check-constraints',
dest=u'ScriptCheckConstraints',
action=u'store_false',
default=True,
help=u'Exclude check constraints for each table or view scripted.')
parser.add_argument(
u'--data-compressions',
dest=u'ScriptDataCompressionOptions',
action=u'store_true',
default=False,
help=u'Script the data compression information.')
parser.add_argument(
u'--exclude-foreign-keys',
dest=u'ScriptForeignKeys',
action=u'store_false',
default=True,
help=u'Exclude foreign keys for each table scripted.')
parser.add_argument(
u'--exclude-full-text-indexes',
dest=u'ScriptFullTextIndexes',
action=u'store_false',
default=True,
help=u'Exclude full-text indexes for each table or indexed view scripted.')
parser.add_argument(
u'--exclude-indexes',
dest=u'ScriptIndexes',
action=u'store_false',
default=True,
help=u'Exclude indexes (XML and clustered) for each table or indexed view scripted.')
parser.add_argument(
u'--exclude-primary-keys',
dest=u'ScriptPrimaryKeys',
action=u'store_false',
default=True,
help=u'Exclude primary keys for each table or view scripted.')
parser.add_argument(
u'--exclude-triggers',
dest=u'ScriptTriggers',
action=u'store_false',
default=True,
help=u'Exclude triggers for each table or view scripted.')
parser.add_argument(
u'--exclude-unique-keys',
dest=u'UniqueKeys',
action=u'store_false',
default=True,
help=u'Exclude unique keys for each table or view scripted.')
# Configuration Options.
parser.add_argument(
u'--display-progress',
dest=u'DisplayProgress',
action=u'store_true',
default=False,
help=u'Display scripting progress.')
parser.add_argument(
u'--enable-toolsservice-logging',
dest=u'EnableLogging',
action=u'store_true',
default=False,
help=u'Enable verbose logging.')
parser.add_argument(
u'--version',
action=u'version',
version='{}'.format(mssqlscripter.__version__))
parameters = parser.parse_args(args)
verify_directory(parameters)
if parameters.Server:
build_connection_string(parameters)
elif parameters.ConnectionString is None:
# Check environment variable for connection string.
if not get_connection_string_from_environment(parameters):
sys.stdout.write(u'Please specify connection information using --connection-string or --server and/or --database --user.\n')
sys.exit()
map_server_options(parameters)
return parameters