我想知道在 SQL Server 中将数据库和数据从开发移动到预生产到生产的推荐方法。数据库最初是在 MS Access 中创建的,因此需要升级到 SQL Server
我读过的 3 个选项:(我确定还有其他选项)
任何建议最欢迎。
有一个返回数组的函数,在查询中我们使用该函数返回结果,例如:
{"TUNDUMA GOING (BORDER)","ARRIVAL DATE",09/01/2016,22,"AT CHECKPOINT"}
{"TUNDUMA RETURN (BORDER)","DEPARTURE DATE",29/01/2016,2,"ON THE ROAD"}
Run Code Online (Sandbox Code Playgroud)
我们如何添加一个WHERE子句,该子句将仅通过搜索ON THE ROAD值的数组的第 5 列进行过滤?
有没有办法参考array[4]?
试过
where trip_status(tlid) <@ array['AT CHECKPOINT']::varchar
Run Code Online (Sandbox Code Playgroud)
同trip_status()是一个返回数组的功能,但我发现了以下错误:
Run Code Online (Sandbox Code Playgroud)Query failed: ERROR: operator does not exist: character varying[] <@ character varying LINE 6: ...ere trip_closed(tlid)=false and trip_status(tlid) <@ array[ ... ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
类似的东西where trip_status(tlid)[4] = 'AT CHECKPOINT'存在吗?
我需要创建一个带有聚合列的视图 nvarchar2(4000)在 Oracle 11g 中。
我拥有的:
Table1每一列类型nvarchar2(4000):
Col_Name txt_value
X a
X b
X c
Y a
Y c
Run Code Online (Sandbox Code Playgroud)
结果应该是这样的视图,两列类型为nvarchar2(4000):
Col_Name txt_value
X a;b;c
Y a;c
Run Code Online (Sandbox Code Playgroud)
我试过:
CREATE VIEW dict (col_Name, txt_value) AS
SELECT col_Name, LISTAGG (txt_value,';') WITHIN GROUP (ORDER BY txt_value)
FROM table1
GROUP BY col_Name
Run Code Online (Sandbox Code Playgroud)
唯一的问题是LISTAGG()将结果转换为varchar2(4000)我需要的 bit类型的列nvarchar2。
我有一个名为prefix存储“aaaa”的列的表。我的应用程序有一个很长的字符串,例如。'aaaabbbbccccdddd'。我想选择特定列是“aaaabbbbccccdddd”前缀的所有行。前缀的长度是可变的。
我怎样才能在 Postgres 中做到这一点?
我试过
SELECT * FROM my_table WHERE '%' || prefix || '%' ILIKE 'aaaabbbbccccdddd'
Run Code Online (Sandbox Code Playgroud)
但它不匹配。
我似乎无法为我的问题找到答案,也许我没有问正确的问题,但它是这样的:
我在 pgAdmin 中基本上有两个表,比如说studentand grades,最终有一个外键约束(student_id 引用 student(id)
CREATE TABLE student (
id CHAR(2),
name CHAR(4),
PRIMARY KEY (id));
CREATE TABLE grade (
student_id CHAR(2),
grade INT,
FOREIGN KEY (student_id) REFERENCES student(id));
Run Code Online (Sandbox Code Playgroud)
我想做的是将两个文件复制/导入到数据库中。一切对学生都有好处,但我的grade.csv文件将包含不存在的学生 ID,我希望导入忽略而不是插入它们。取而代之的是,命令失败,没有导入任何内容。
什么是正确有效的方法来做到这一点?
在我们的数据库(为简洁起见是 DB)中,我们存储了一些非常敏感的政府数据,并希望尽可能保护这些数据。
这里有两种考虑安全性的方法:
我的问题集中在后者。
信息的敏感性被认为如此之高,以至于我们面临着内部员工极有可能接触到这些数据的可能性。
换句话说,我们担心内部员工可以批量窃取数据并进行交易(数据只有在完全被盗时才有意义,因为它是人们私人信息的巨大数据库)。
我们的应用程序以逐条记录的方式访问数据库。这被认为是好的,因为使用逐条记录方式访问数据人员不会大规模窃取信息。
一个显而易见的解决方案是:将“数据库的钥匙”交给一个最值得信赖的人。然而,我们担心的是,即使在这种情况下,有人也可以用枪指着他的头并要求制作 DB 的副本。
有什么办法可以保护数据库,这样即使 DBA 用枪指着他的头,他也无法窃取数据?
注意:我们使用的数据库管理系统是 PostgreSQL,但如果它提供我们正在寻求的安全保证,我们可以轻松切换到另一个。
我想找出 MySQL 中两个表的不匹配记录。
我试图456从字符串中提取:123:456:如下:
select regexp_substr(':123:456:', ':(\d+):', 1, 2, 'i', 1) from dual
Run Code Online (Sandbox Code Playgroud)
但是,此查询返回null。我究竟做错了什么?
我正在尝试通过编写备份和还原脚本来复制数据库。我的备份程序工作正常,但我不断收到错误消息
已为文件指定了冲突的文件重定位。只应为任何逻辑文件名指定一个 WITH MOVE 子句。
当我运行该程序进行还原时。
这是程序代码。谁能发现我的错误是什么?
ALTER PROCEDURE spDBRestore (@BackupName NVARCHAR(50), @RestoreName NVARCHAR(50))
AS
BEGIN
DECLARE @BackupPath NVARCHAR(4000) = 'S:\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\TemplateCopy\'+@BackupName+'.BAK',
@NewDBFileName NVARCHAR(4000) = 'S:\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\'+@RestoreName+'.mdf',
@NewLFFileName NVARCHAR(4000) = 'L:\MSSQL10_50.MSSQLSERVER\MSSQL\Data\'+@RestoreName+'_1.ldf'
select @BackupName, @RestoreName, @NewDBFileName, @newlffilename
RESTORE DATABASE @RestoreName
FROM DISK = @BackupPath
WITH FILE = 1,
MOVE @BackupName TO @NewDBFileName,
MOVE @BackupName TO @NewLFFileName,
NOUNLOAD,
REPLACE;
END
Run Code Online (Sandbox Code Playgroud) postgresql ×4
oracle ×2
oracle-11g ×2
sql-server ×2
array ×1
backup ×1
datetime ×1
foreign-key ×1
innodb ×1
insert ×1
migration ×1
mysql ×1
mysql-5.6 ×1
pgadmin ×1
security ×1
sysdba ×1
where ×1