一行导出所有任意微软SQL server数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解
文章标题: 一行导出所有任意微软SQL serer数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解
关键字 : mssql-scripter,SQL Server
文章分类: 技术分享
创建时间: 2020年3月30日
_.-"\
_.-" \
,-" \
\ \
\ \Zoomla逐浪CMS\
\ \ web开发秘笈\ \
\ \ z01.com _.-;
\ \ _.-" :
\ \,-" _.-"
\( _.-"
`--"
本文由国内专业从事高端web与全栈开发、国内首家提供全领域生态环境(呈现、内核、前端)的Zoomla!逐浪CMS团队首发,官网www.z01.com
什么是mssql-scripter
一款由微软官方发布的数据库管理工具,可以通过命令行,直接生成SQL脚本。
在实际开发中,如果想提高数据库生成效率,则用它能事半功倍。
如果你语言足够熟悉,当然也可以用sqlcms、dotNETcore、Powershell工具在微软平台,快速的对数据库进行各类建模,而这款工具则提供了另一种跨平台的可能。
让我们看下官方的介绍:
我们很高兴推出mssql-scripter,这是一种用于编写SQL Server数据库脚本的多平台命令行体验。
mssql-scripter是等同于SSMS中广泛使用的“生成脚本向导”经验的多平台命令行。您可以在Linux,macOS和Windows上使用mssql-scripter为在任何地方运行的SQL Server,Azure SQL数据库和Azure SQL数据仓库中的数据库对象生成数据定义语言(DDL)和数据操作语言(DML)T-SQL脚本。您可以将生成的T-SQL脚本保存到.sql文件,或将其通过管道传输到标准nix实用程序(例如sed,awk,grep)以进行进一步的转换。您可以编辑生成的脚本或将其检入源代码管理,然后使用标准的多平台SQL命令行工具(如sqlcmd)在现有SQL数据库部署过程和DevOps管道中执行脚本。
mssql-scripter使用Python构建,并结合了新的Azure CLI 2.0工具的可用性原则。
官方Github库:https://github.com/microsoft/mssql-scripter
截止本文写作时,版本号:1.0.0a23
有何特色
- 它是跨平台的
- 它是基于python的(虽然python最近炒得很热,其实微软的powershell和.netcore也有很多超凡之处,只是微软为python提供了一种操作可能,展现了
巨硬
团队在跨平台方面的实力。 - 它更精简
- 它能集成在环境变量。
应用场景
除了普通开发的、部署外,还可以用于CI/CD持续部署,亦即自动化部署。
如何安装
首先是安装python
安装Python,最新安装包下载地址:https://www.python.org/downloads/,注意安装的时候要选择”Add Python to PATH”选项:
安装有一些选项,用默认就可以了,以下为相关选项说明:
- nstall for all users 所有用户可使用
- Associate files with Python 关联PY相关的文件
- Create shortcuts for installed applications 创建桌面的快捷方式
- Add Python to environment variables 添加系统变量(windows系统)
- Precompile standard library 安装预编译标准库
- Download debugging symbols 安装调试模块(开发者可选择,运用于开发环境)
- Download debug binaries安装用于VS的调试符号(二进制),如果不使用VS作为开发工具,则不用勾选(支持VS2015以上),适用于.NET开发。
b) 安装mssql-scripter,命令行里执行下面命令:
pip install mssql-scripter
在Linux安装
a) 检查pip版本,是否是9.0及其以上:
pip –version
b) 如果pip未安装或者版本低于9.0,使用如下命令安装以及升级版本:
sudo apt-get install python-pip
sudo pip install --upgrade pip
c) 安装mssql-scripter:
sudo pip install mssql-scripter
如果系统是Ubuntu或者Debian,需要安装libunwind8软件包:
Ubuntu 14 & 17
执行如下命令:
sudo apt-get update
sudo apt-get install libunwind8
Debian 8(无实测环境,仅官方文档)
文件‘/etc/apt/sources.list’需要更新:
deb http://ftp.us.debian.org/debian/ jessie main
执行如下命令:
sudo apt-get update
sudo apt-get install libunwind8
macOS(无实测环境,仅官方文档)
a) 检查pip版本,是否是9.0及其以上:
pip –version
b) 如果pip未安装或者版本低于9.0,使用如下命令安装以及升级版本:
sudo apt-get install python-pip
sudo pip install --upgrade pip
c) 安装mssql-scripter:
sudo pip install mssql-scripter
使用示例
经典的导出全库
# 微软官方示例
mssql-scripter -S localhost -d AdventureWorks -U sa --schema-and-data > ./adventureworks.sql
# 实际用例
mssql-scripter -S 192.168.1.4 -d ZoomlaCMS -U ZoomlaDB_user -P 数据库密码 --schema-and-data --display-progress > ./adventureworks3.sql
显示进度导出脚本
mssql-scripter -S 192.168.1.4 -d ZoomlaCMS -U ZoomlaDB_user -P 数据库密码 --schema-and-data --exclude-use-database --display-progress > ./adventureworks3.sql
显示进度不带use数据库,排除ZL_Node表,其它全生成
mssql-scripter -S 192.168.1.4 -d ZoomlaCMS -U ZoomlaDB_user -P 数据库密码 --schema-and-data --exclude-objects ZL_Node --exclude-use-database --display-progress > ./adventureworks4.sql
显示进度不带use数据库,仅生成ZL_Node表
mssql-scripter -S 192.168.1.4 -d ZoomlaCMS -U ZoomlaDB_user -P 数据库密码 --schema-and-data --include-objects ZL_Node --exclude-use-database --display-progress > ./adventureworksA.sql
显示进度不带use数据库,生成ZL_Node,ZL_User两张表
mssql-scripter -S 192.168.1.4 -d ZoomlaCMS -U ZoomlaDB_user -P 数据库密码 --schema-and-data --include-objects ZL_Node ZL_User --exclude-use-database --display-progress > ./adventureworksB.sql
显示进度不带use数据库,生成ZL_Node,ZL_User,ZL_CommonModel三张表,包含删除旧表建新以及插入数据脚本
mssql-scripter -S 192.168.1.4 -d ZoomlaCMS -U ZoomlaDB_user -P 数据库密码 --schema-and-data --include-objects ZL_Node ZL_User ZL_CommonModel --exclude-use-database --script-drop-create --display-progress > ./adventureworksB.sql
一些有用的参数
--file-per-object默认情况下,脚本是单个文件。如果提供并且给--file-path目录,每个脚本该目录的对象。
--data-only默认情况下,仅对架构进行脚本编写。如果提供,生成仅包含数据的脚本。
--schema-and-data默认情况下,仅对模式进行脚本编写。如果提供,生成包含架构和数据的脚本。
--script-create脚本对象CREATE语句。
--script-drop脚本对象DROP语句。
--script-drop-create脚本对象CREATE和DROP语句。
-exclude-use-database
不生成USE DATABASE语句。
--data-compressions编写数据压缩信息脚本。
--display-progress显示脚本编制进度
作为变量使用
喜欢极简的你,一定嫌写数据库名和密码这些太复杂,没问题,微软爸爸想到了,你还可以将这些作为变量写到系统中。
可以把连接字符串设置成环境变量:
# set environment variable MSSQL_SCRIPTER_CONNECTION_STRING with a connection string.
export MSSQL_SCRIPTER_CONNECTION_STRING='Server=myserver;Database=mydb;User Id=myuser;Password=mypassword;'
mssql-scripter
# set environment variable MSSQL_SCRIPTER_PASSWORD so no password input is required.
export MSSQL_SCRIPTER_PASSWORD='ABC123'
mssql-scripter -S localhost -d AdventureWorks -U sa
微软团队官方使用说明(英文)
Usage Guide
Contents:
Description
mssql-scripter is the multiplatform command line equivalent of the widely used Generate Scripts Wizard experience in SSMS.
You can use mssql-scripter on Linux, macOS, and Windows to generate data definition language (DDL) and data manipulation language (DML) T-SQL scripts for database objects in SQL Server running anywhere, Azure SQL Database, and Azure SQL Data Warehouse. You can save the generated T-SQL script to a .sql file or pipe it to standard *nix utilities (for example, sed, awk, grep) for further transformations. You can edit the generated script or check it into source control and subsequently execute the script in your existing SQL database deployment processes and DevOps pipelines with standard multiplatform SQL command line tools such as sqlcmd.
Options
For option parameters, pass in '-h':
$ mssql-scripter -h
usage: mssql-scripter [-h] [--connection-string | -S ] [-d] [-U] [-P] [-f]
[--file-per-object] [--data-only | --schema-and-data]
[--script-create | --script-drop | --script-drop-create]
[--target-server-version {2005,2008,2008R2,2012,2014,2016,vNext,AzureDB,AzureDW}]
[--target-server-edition {Standard,Personal,Express,Enterprise,Stretch}]
[--include-objects [[...]]] [--exclude-objects [[...]]]
[--include-schemas [[...]]] [--exclude-schemas [[...]]]
[--include-types [[...]]] [--exclude-types [[...]]]
[--ansi-padding] [--append] [--check-for-existence] [-r]
[--convert-uddts] [--include-dependencies]
[--exclude-headers] [--constraint-names]
[--unsupported-statements]
[--disable-schema-qualification] [--bindings]
[--collation] [--exclude-defaults]
[--exclude-extended-properties] [--logins]
[--object-permissions] [--owner]
[--exclude-use-database] [--statistics]
[--change-tracking] [--exclude-check-constraints]
[--data-compressions] [--exclude-foreign-keys]
[--exclude-full-text-indexes] [--exclude-indexes]
[--exclude-primary-keys] [--exclude-triggers]
[--exclude-unique-keys] [--display-progress]
[--enable-toolsservice-logging] [--version]
Microsoft SQL Server Scripter Command Line Tool. Version 1.0.0a14
optional arguments:
-h, --help show this help message and exit
--connection-string Connection string of database to script. If connection
string and server are not supplied, defaults to value
in environment variable
MSSQL_SCRIPTER_CONNECTION_STRING.
-S , --server Server name.
-d , --database Database name.
-U , --user Login ID for server.
-P , --password If not supplied, defaults to value in environment
variable MSSQL_SCRIPTER_PASSWORD.
-f , --file-path File to script out to or directory name if scripting
file per object.
--file-per-object By default script to a single file. If supplied and
given a directory for --file-path, script a file per
object to that directory.
--data-only By default only the schema is scripted. if supplied,
generate scripts that contains data only.
--schema-and-data By default only the schema is scripted. if supplied,
generate scripts that contain schema and data.
--script-create Script object CREATE statements.
--script-drop Script object DROP statements.
--script-drop-create Script object CREATE and DROP statements.
--target-server-version {2005,2008,2008R2,2012,2014,2016,vNext,AzureDB,AzureDW}
Script only features compatible with the specified SQL
Version.
--target-server-edition {Standard,Personal,Express,Enterprise,Stretch}
Script only features compatible with the specified SQL
Server database edition.
--include-objects [ [ ...]]
Database objects to include in script.
--exclude-objects [ [ ...]]
Database objects to exclude from script.
--include-schemas [ [ ...]]
Database objects of this schema to include in script.
--exclude-schemas [ [ ...]]
Database objects of this schema to exclude from
script.
--include-types [ [ ...]]
Database objects of this type to include in script.
--exclude-types [ [ ...]]
Database objects of this type to exclude from script.
--ansi-padding Generates ANSI Padding statements.
--append Append script to file.
--check-for-existence
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.
-r, --continue-on-error
Continue scripting on error.
--convert-uddts Convert user-defined data types to base types.
--include-dependencies
Generate script for the dependent objects for each
object scripted.
--exclude-headers Exclude descriptive headers for each object scripted.
--constraint-names Include system constraint names to enforce declarative
referential integrity.
--unsupported-statements
Include statements in the script that are not
supported on the target SQL Server Version.
--disable-schema-qualification
Do not prefix object names with the object schema.
--bindings Script options to set binding options.
--collation Script the objects that use collation.
--exclude-defaults Do not script the default values.
--exclude-extended-properties
Exclude extended properties for each object scripted.
--logins Script all logins available on the server, passwords
will not be scripted.
--object-permissions Generate object-level permissions.
--owner Script owner for the objects.
--exclude-use-database
Do not generate USE DATABASE statement.
--statistics Script all statistics.
--change-tracking Script the change tracking information.
--exclude-check-constraints
Exclude check constraints for each table or view
scripted.
--data-compressions Script the data compression information.
--exclude-foreign-keys
Exclude foreign keys for each table scripted.
--exclude-full-text-indexes
Exclude full-text indexes for each table or indexed
view scripted.
--exclude-indexes Exclude indexes (XML and clustered) for each table or
indexed view scripted.
--exclude-primary-keys
Exclude primary keys for each table or view scripted.
--exclude-triggers Exclude triggers for each table or view scripted.
--exclude-unique-keys
Exclude unique keys for each table or view scripted.
--display-progress Display scripting progress.
--enable-toolsservice-logging
Enable verbose logging.
--version show program's version number and exit
Examples
Below are example commands that run against the AdventureWorks database. Here is the list of examples:
Dump database object schema and data
Pipe a generated script to sed
Dump database object schema
# generate DDL scripts for all objects in the Adventureworks database and save the script to a file
mssql-scripter -S localhost -d AdventureWorks -U sa
# alternatively, specify the schema only flag to generate DDL scripts for all objects in the Adventureworks database and save the script to a file
mssql-scripter -S localhost -d AdventureWorks -U sa -f ./adventureworks.sql
Dump database object data
# generate DDL scripts for all objects in the Adventureworks database and save the script to stdout.
mssql-scripter -S localhost -d AdventureWorks -U sa --data-only
Dump the database object schema and data
# script the database schema and data piped to a file.
mssql-scripter -S localhost -d AdventureWorks -U sa --schema-and-data > ./adventureworks.sql
# execute the generated above script with sqlcmd
sqlcmd -S mytestserver -U sa -i ./adventureworks.sql
Include database objects
# generate DDL scripts for objects that contain 'Employee' in their name to stdout
mssql-scripter -S localhost -d AdventureWorks -U sa --include-objects Employee
# generate DDL scripts for the dbo schema and pipe the output to a file
mssql-scripter -S localhost -d AdventureWorks -U sa --include-objects dbo. > ./dboschema.sql
Exclude database objects
# generate DDL scripts for objects that do not contain 'Sale' in their name to stdout
mssql-scripter -S localhost -d AdventureWorks -U sa --exclude-objects Sale
Target server version
# specify the version of SQL Server the script will be run against
mssql-scripter -S myServer -d AdventureWorks -U myUser –-target-server-version "AzureDB" > myData.sql
Target server edition
# specify the edition of SQL Server the script will be run against
mssql-scripter -S localhost -d AdventureWorks -U myUser –-target-server-edition "Enterprise" > myData.sql
Pipe a generated script to sed
Note this example is for Linux and macOS usage.
# change a schema name in the generated DDL script
# 1) generate DDL scripts for all objects in the Adventureworks database
# 2) pipe generated script to sed and change all occurrences of SalesLT to SalesLT_test and save the script to a file
$ mssql-scripter -S localhost -d Adventureworks -U sa | sed -e "s/SalesLT./SalesLT_test./g" > adventureworks_SalesLT_test.sql
Script data to a file
# script all the data to a file.
mssql-scripter -S localhost -d AdventureWorks -U sa --data-only > ./adventureworks-data.sql
Environment Variables
You can set environment variables for your connection string through the following steps:
# set environment variable MSSQL_SCRIPTER_CONNECTION_STRING with a connection string.
$ export MSSQL_SCRIPTER_CONNECTION_STRING='Server=myserver;Database=mydb;User Id=myuser;Password=mypassword;'
$ mssql-scripter
# set environment variable MSSQL_SCRIPTER_PASSWORD so no password input is required.
$ export MSSQL_SCRIPTER_PASSWORD='ABC123'
$ mssql-scripter -S localhost -d AdventureWorks -U sa
原文:https://www.z01.com/help/DBA/3558.shtml (分享自Zoomla!逐浪CMS官网)
一行导出所有任意微软SQL server数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解的更多相关文章
- 浅析基于微软SQL Server 2012 Parallel Data Warehouse的大数据解决方案
作者 王枫发布于2014年2月19日 综述 随着越来越多的组织的数据从GB.TB级迈向PB级,标志着整个社会的信息化水平正在迈入新的时代 – 大数据时代.对海量数据的处理.分析能力,日益成为组织在这个 ...
- 转:浅析基于微软SQL Server 2012 Parallel Data Warehouse的大数据解决方案
综述 随着越来越多的组织的数据从GB.TB级迈向PB级,标志着整个社会的信息化水平正在迈入新的时代 – 大数据时代.对海量数据的处理.分析能力,日益成为组织在这个时代决胜未来的关键因素,而基于大数据的 ...
- delphi 2010 导出sql server 数据到DBF乱码问题
近日,由于业务需要导出sql server 数据到DBF文件,要查询多表记录,并适当处理后生成导出DBF文件,系统使用delphi2010平台开发. 首先按要求在VFP里创建DBF表,字段数有240个 ...
- 08Microsoft SQL Server 数据查询
Microsoft SQL Server 数据查询 单表查询所有列 --查询所有行所有列 select all * from table; --查询不重复行的所有列 select distinct * ...
- SQL Server 复制 - 发布订阅(SQL Server 数据同步)
原文:SQL Server 复制 - 发布订阅(SQL Server 数据同步) SQL Server的同步是通过SQL Server自带的复制工具来实现的,分发布和订阅2大步. A,复制-发布 发布 ...
- 浅谈SQL Server数据内部表现形式
在上篇文章 浅谈SQL Server内部运行机制 中,与大家分享了SQL Server内部运行机制,通过上次的分享,相信大家已经能解决如下几个问题: 1.SQL Server 体系结构由哪几部分组成? ...
- SQL Server数据归档的解决方案
SQL Server数据归档的解决方案 最近新接到的一项工作是把SQL Server中保存了四五年的陈年数据(合同,付款,报销等等单据)进行归档,原因是每天的数据增量很大,而历史数据又不经常使用, ...
- [转帖]微软 SQL Server 2008/R2 停止支持
微软 SQL Server 2008/R2 停止支持 微软停止支持 SQLSERVER 2008R2 https://t.cj.sina.com.cn/articles/view/3172142827 ...
- Docker-compose搭建ELK环境并同步MS SQL Server数据
前言 本文作为学习记录,供大家参考:一次使用阿里云(Aliyun)1核2G centos7.5 云主机搭建Docker下的ELK环境,并导入MS SQL Server的商品数据以供Kibana展示的配 ...
随机推荐
- P6620-[省选联考2020A卷]组合数问题【组合数学,斯特林数】
正题 题目链接:https://www.luogu.com.cn/problem/P6620 题目大意 给出\(n,x,p,m\)和一个\(m\)次多项式\(f\)求 \[\sum_{k=0}^nf( ...
- IdentityServer4[4]使用密码保护API资源
使用密码保护API资源(资源所有者密码授权模式) 资源所有者(Resource Owner)就是指的User,也就是用户.所以也称为用户名密码模式.相对于客户端凭证模式,增加了一个参与者User.通过 ...
- Bert文本分类实践(二):魔改Bert,融合TextCNN的新思路
写在前面 文本分类是nlp中一个非常重要的任务,也是非常适合入坑nlp的第一个完整项目.虽然文本分类看似简单,但里面的门道好多好多,博主水平有限,只能将平时用到的方法和trick在此做个记录和分享 ...
- Java秘诀!Java逻辑运算符介绍
运算符丰富是 Java 语言的主要特点之一,它提供的运算符数量之多,在高级语言中是少见的. Java 语言中的运算符除了具有优先级之外,还有结合性的特点.当一个表达式中出现多种运算符时,执行的先后顺序 ...
- ReentrantLock可重入锁、公平锁非公平锁区别与实现原理
ReentrantLock是lock接口的一个实现类,里面实现了可重入锁和公平锁非公平锁 ReentrantLock公平锁和不公平锁实现原理 公平锁会获取锁时会判断阻塞队列里是否有线程再等待,若有获取 ...
- Catch That Cow 经典广搜
链接:http://poj.org/problem?id=3278 题目: Farmer John has been informed of the location of a fugitive co ...
- javascript-jquery介绍
jquery优势 1.轻量级 2.强大的选择器 3.出色的DOM封装 4.可靠的事件处理机制 5.完善的Ajax 6.不污染顶级变量 7.出色的浏览器兼容 8.链式操作方式 9.隐式迭代 10.行为层 ...
- 记一次关于pdf 下载需求变更到 pdf 在线预览
背景: 之前的需求是根据接口中提供的Blob数据实现PDF下载,已实现代码如下: 1 const url = window.URL.createObjectURL(newBlob([response. ...
- Scrum Meeting 0605
零.说明 日期:2021-6-5 任务:简要汇报两日内已完成任务,计划后两日完成任务 一.进度情况 组员 负责 两日内已完成的任务 后两日计划完成的任务 困难 qsy PM&前端 暂无 重新设 ...
- 面试不再慌,终于有人把TCP讲明白了。。。
前言 TCP(Transmission Control Protocol,传输控制协议) 是计算机网络的的重要组成部分,也是网络编程的重要内容,还有我们平时接触最多的 HTTP 也是基于 TCP 实现 ...