标签: scripting

通过 SQL 查询/批处理清理名称

我们有敏感信息(人名),我们正在寻找一个脚本来“清理”这些人名。有没有人想出一个很好的算法来做到这一点,而不是让所有姓氏都变成“TEST”之类的?

谢谢。

sql-server scripting sql-server-2008-r2

4
推荐指数
1
解决办法
3568
查看次数

SQL Server 2012 Powershell 脚本以生成具有架构和数据的数据库

使用 Sql Server 2012,有人可以向我展示一个简单的 powershell 3 脚本来生成我的整个数据库(架构和数据)吗?

我试过这个:

$Filepath='d:\b\t' # local directory to save build-scripts to
$DataSource='HH' # server name and instance
$Database='HMovies'# the database to copy from
# set "Option Explicit" to catch subtle errors
set-psdebug -strict
$ErrorActionPreference = "stop" # you can opt to stagger on, bleeding, if an error occurs
# Load SMO assembly, and if we're running SQL 2008 DLLs load the SMOExtended and SQLWMIManagement libraries
$ms='Microsoft.SqlServer'
$v = [System.Reflection.Assembly]::LoadWithPartialName( "$ms.SMO")
if ((($v.FullName.Split(','))[1].Split('='))[1].Split('.')[0] -ne '9') { …
Run Code Online (Sandbox Code Playgroud)

sql-server powershell scripting sql-server-2012

4
推荐指数
1
解决办法
5535
查看次数

解析 rs.status() 输出以显示 mongodump 目标的一个辅助节点

我希望将 mongodump 运行到辅助(不是主)。所以我需要作为输出主机名和一个辅助端口。

# ./mongo  -udbadm admin --port 27100 -p --quiet --eval "printjson(rs.status().members.map(function(m) { return {'name':m.name, 'stateStr':m.stateStr} }))"
Enter password: 
[
        {
                "name" : "example-1.domain:27200",
                "stateStr" : "SECONDARY"
        },
        {
                "name" : "example-2.domain:27200",
                "stateStr" : "PRIMARY"
        },
        {
                "name" : "example-3.domain:27200",
                "stateStr" : "SECONDARY"
        }
]
Run Code Online (Sandbox Code Playgroud)

使用 shell 脚本工具,我可以毫无问题地提取带有主机名和端口的辅助设备。我的问题是如何以 MongoDB 方式完成这项工作?您推荐我什么工具?我听说这jq对于 JSON 数据更好。但不知道如何仅提取一个辅助主机。

mongodb backup scripting

4
推荐指数
1
解决办法
4645
查看次数

用 GO 分解插入语句

我正在尝试建立这个答案如何运行包含许多插入的大型脚本而不会耗尽内存?

而分手的查询与较小的BEGIN TRANSACTION,然后GO

BEGIN TRANSACTION; 

MERGE ghcnd.dbo.us_APCP as target 
using 
(values 
  ('US1CASN0123','2018-03-22','--N','251'),
  ('US1KSGO0013','2018-03-22','--N','41'),
  ('US1WYFM0039','2018-03-22','--N','0'),
  ('US1SCCF0008','2018-03-22','--N','10')) 
as source(cell,[date],valueFlag,[value]) 
on target.cell = source.cell 
AND target.date = source.date  
when matched then 
    update 
    set valueFlag = source.valueFlag , 
        value = source.value 
when not matched then 
    insert (cell,[date],valueFlag,[value]) 
    values (cell,[date],valueFlag,[value]) 

COMMIT TRANSACTION; GO 
Run Code Online (Sandbox Code Playgroud)

但是我收到这个错误

消息 102,级别 15,状态 1,第 3 行 ')' 附近的语法不正确。消息 102,级别 15,状态 1,第 3 行“GO”附近的语法不正确。

sql-server scripting merge

4
推荐指数
1
解决办法
752
查看次数

在 SQL Server Express 中编写维护计划脚本

我将如何在 SQL Express 上运行 Ola Halengren 的 sql 维护计划的各个方面?

我的理解是每个作业都应该按特定顺序运行。我确信 .bat 或 cmd 文件可以做到这一点,但不确定从哪里/如何开始。SQL Express 不显示服务器代理,因此不显示作业。

我可以以另一种方式查看它们并仍然使用调度程序,还是必须编写脚本?我是否必须从任务计划程序运行它,或者 SQL 代理计划程序可以处理这个问题?非常感谢您可以提供的任何帮助/方向。

附带说明一下,我还想知道是否可以安排作业在另一个作业完成后运行,而不是指定运行作业的时间?

sql-server scripting sql-server-express maintenance-plans ola-hallengren

4
推荐指数
1
解决办法
1266
查看次数

如何编写用户定义的表类型的脚本?

我可以 使用以下任一脚本获取所有表类型的名称和定义

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED


IF OBJECT_ID('TEMPDB..#RADHE') IS NOT NULL
   DROP TABLE #RADHE

CREATE TABLE #RADHE
(
 RADHE SYSNAME,
 COLUMN_NAME SYSNAME,
 TYPE_COLUMN SYSNAME,
 PRIMARY KEY CLUSTERED (RADHE,COLUMN_NAME)
 )

DECLARE @sql nvarchar(max) = N'', 
  @stub nvarchar(max) = N'SELECT [RADHE]=N''$--RADHE--$'', 
   COLUMN_NAME=name, TYPE_COLUMN=system_type_name
   FROM sys.dm_exec_describe_first_result_set(''DECLARE 
   @tvp $--RADHE--$; SELECT * FROM @tvp;'',null,null)
   ORDER BY column_ordinal;';

SELECT @sql += REPLACE(@stub, N'$--RADHE--$', 
  QUOTENAME(s.name) + N'.' + QUOTENAME(t.name))
FROM sys.table_types AS t
INNER JOIN sys.schemas AS s
ON t.[schema_id] = s.[schema_id];

INSERT …
Run Code Online (Sandbox Code Playgroud)

sql-server scripting sql-server-2016 user-defined-table-type automation

4
推荐指数
1
解决办法
2329
查看次数

“psql:/usr/pgsql-11/lib/libpq.so.5:没有可用的版本信息(psql需要)”实际上是什么意思?

我对以下输出有疑问:

[nikola@192 ~] $ sudo su - postgres
[postgres@192 ~] $ psql dvdrental postgres
psql: /usr/pgsql-11/lib/libpq.so.5: no version information available (required by psql)
psql: /usr/pgsql-11/lib/libpq.so.5: no version information available (required by psql)
psql (11.7, server 11.8)
Type "help" for help.

dvdrental=# 
Run Code Online (Sandbox Code Playgroud)

以下两条消息代表什么,为什么?我正在询问的消息:

  1. psql: /usr/pgsql-11/lib/libpq.so.5: no version information available (required by psql)
  2. psql (11.7, server 11.8)-顺便说一句,这个psql --version命令我获得以下的输出: psql (PostgreSQL) 11.8必须安装才能执行的命令,比如PostgreSQL服务器版本11.7\dt\l)......并输出如下:
postgres=# select * FROM version();
                                                version                                                 
--------------------------------------------------------------------------------------------------------
 PostgreSQL 11.8 on x86_64-pc-linux-gnu, …
Run Code Online (Sandbox Code Playgroud)

postgresql psql scripting bash

4
推荐指数
1
解决办法
8750
查看次数

将表记录导出到 INSERT 脚本

我正在为开发设置测试环境,需要从生产中的表中导出一些静态数据。理想情况下,导出的产品将采用脚本的形式,其中包含所有必需的INSERT语句。这样做,我可以在每次测试后快速重置开发环境。

谁能告诉如何使用 SQL Server 2008、SQL Management Studio 和/或 Visual Studio 2010 完成此操作?

注意:所有表都没有外键,我在源数据库中拥有完全权限,每张表的行数不超过几十行。

scripting sql-server-2008-r2

3
推荐指数
2
解决办法
3万
查看次数

通过 /etc/cron.daily 中的 shell 脚本的无密码 mysqldump

我知道有很多与此类似的问题,但似乎没有一个对我的问题有明确的答案,所以这就是我发布此内容的原因......我希望在正确的地方。

问题

我有一个脚本,/etc/cron.daily其中执行每日数据库备份等。只要将密码硬编码到mysqldump命令的脚本中,它就可以正常工作。

#!/bin/sh
$ mysqldump -u [uname] -p[pass] db_name > db_backup.sql
Run Code Online (Sandbox Code Playgroud)

但是,不想在脚本中使用密码,我设置了~/.my.cnf文件 (chmod 600),其中存储了我的用户密码,因此mysqldump脚本中的命令将是无密码的。

~/.my.cnf    
[mysqldump]
password="pass"
Run Code Online (Sandbox Code Playgroud)
#!/bin/sh    
$ mysqldump -u [uname] db_name > db_backup.sql
Run Code Online (Sandbox Code Playgroud)

当我以 root 身份从命令行手动运行这个新脚本时,它就像一个魅力。

sudo sh /etc/cron.daily/daily-backup-script
Run Code Online (Sandbox Code Playgroud)

但是当cron想要运行它时,它无法转储数据库,并出现以下错误:

mysqldump: Got error: 1045: Access denied for user 'user'@'localhost' (using password: NO) when trying to connect.
Run Code Online (Sandbox Code Playgroud)

所以,我认为cron没有相应的权限才能执行密码的mysqldymp脚本命令中,用密码放在~/.my.cnf,但是脚本和密码的mysqldump命令它是从完美用命令行工作sudo

迄今为止的努力:

  1. 我已经在脚本sudo中的mysqldump命令前面尝试过。
  2. 我已经在脚本sudo -u …

mysqldump my.cnf scripting password cron

3
推荐指数
1
解决办法
1387
查看次数

错误:“sql”不是已知变量

这一定是我在这里问过的最愚蠢的问题之一,但是我的 SQL 脚本中肯定隐藏着一些非常恶心的问题,阻止它运行。

我正在使用以下示例 CLI 语法调用 cobertura.sql 文件:

psql -h localhost -U myUser -f cobertura.sql myDB
Run Code Online (Sandbox Code Playgroud)

但它抱怨以下错误:

psql:cobertura.sql:29: ERROR:  "sql " is not a known variable
LINE 14: sql := format('insert into cobertura_tmp select count(*) as ... cobertura.sql file:
Run Code Online (Sandbox Code Playgroud)
DO language plpgsql $$
declare 
    eq  record;
    sql varchar;
BEGIN

create table if not exists cobertura_tmp  (num integer, realtime char(1), lat numeric, lng numeric);

truncate table cobertura_tmp;
for eq in select imei_equipo as imei  from cliente_avl_equipo where id_cliente in (select id …
Run Code Online (Sandbox Code Playgroud)

postgresql scripting plpgsql postgresql-9.4 unicode

3
推荐指数
1
解决办法
4757
查看次数