我在SQL Server数据库中有两个表。我想检查这两个表是否在结构上相同。我使用UNION/ EXCEPT
运算符来检查这一点,发现这两个表不相同。
以下是我的问题:
我们如何知道两个表的结构是否相同?
如果它们不相同,我们如何获得差异的细节?如果一个表中缺少一列,我们如何获取缺失列的名称?
如果这两个表中的列之间存在数据类型不匹配,我们是否可以获取具有不同数据类型的列的名称?
答案 0 :(得分:1)
在SSDT中,您可以使用模式比较来查看列,表,数据类型等是否存在任何差异。
如果你想用它编写代码。您可以查询information_schema目录
答案 1 :(得分:0)
as @jarlh评论道。你可以在information_schema.columns中找到信息
或,
你可以使用这个名为 sql-dbdiff 的工具:https://code.google.com/archive/p/sql-dbdiff/
答案 2 :(得分:0)
如果您使用的是Sql Server Management Studio,右键单击表名
上的脚本表为>创建
并且您获得了表的DDL,这只是在创建表时查看表的实用方法。当然,正如大家已经说过的那样,information_schema拥有你需要的所有信息。
答案 3 :(得分:0)
使用sys.dm_exec_describe_first_result_set
,您可以获取有关表/查询中的列的信息...在此示例中,您可以看到如何比较列名,可为空性,数据类型和身份
SELECT DEV.name as DEV_ColumnName,
PROD.name as PROD_ColumnName,
DEV.is_nullable as DEV_is_nullable,
PROD.is_nullable as PROD_is_nullable,
DEV.system_type_name as DEV_Datatype,
PROD.system_type_name as PROD_Datatype,
DEV.is_identity_column as DEV_is_identity,
PROD.is_identity_column as PROD_is_identity
FROM sys.dm_exec_describe_first_result_set (N'SELECT * FROM dbo.TABLE1', NULL, 0) DEV
FULL OUTER JOIN sys.dm_exec_describe_first_result_set (N'SELECT * FROM dbo.TABLE2', NULL, 0) PROD
ON DEV.name = PROD.name
答案 4 :(得分:0)
您可以在这里比较表
如果要将表与同一数据库进行比较,只需提供相同的 i think you are going wrong in coding..
you should try like this way:
1 for set adapter-
gridLayout = new GridLayoutManager(getActivity(), 2);
recyclerView.setLayoutManager(gridLayout);
adapter = new UpicksAdapter(getActivity(), upicks);
2. change data on click:
botonbuscar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
upicks.clear(); // clear your list
before adding new data
String busqueda = txtbusqueda.getText().toString();
getUpicksBusquedaFromDB(0, busqueda);
adapter.notifyDataSetChanged(); //for update list
//-- Note-- Make sure your "adapter" instance will not be create "adapter = new .." again and again.
}
});
和DATABASENAMESOURCE
名称
DATABASENAMEDESTINATION