页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。
评论: 接口参数变化

...

代码块
languagejs
linenumberstrue
collapsetrue
importPackage(Packages.smartbi.sdk.service.datasource);
importClass(java.lang.System);
importPackage(Packages.smartbi.freequery.querydata);
importPackage(Packages.smartbi.freequery.repository);
importPackage(Packages.smartbi.freequery.basicdata);
importClass(java.util.List);
importPackage(Packages.smartbi.state);
importPackage(Packages.smartbi.fake);
importPackage(Packages.smartbi.usermanager);

var dataSourceId = "DS.sqlserver2008Copy";//需要修改的数据源ID
var tableName = ["student","student_copy"];//需要更新的表名,格式:["表1","表2","表3"...];当"var tableName = []" 时执行全局更新。
var datasrcService = new DataSourceService(connector);
var mds = MetaDataServiceImpl.getInstance();
var sql = "SELECT A.name AS table_name,B.name AS column_name,C.value AS column_description FROM sys.tables A INNER JOIN sys.columns B ON B.object_id = A.object_id LEFT JOIN sys.extended_properties C ON C.major_id = B.object_id AND C.minor_id = B.column_id";
if(tableName.length > 0){
	var nameStr = "";
	//拼接表名字符串,作为sql查询条件。
	for (var i = 0; i < tableName.length; i++){
		if(i == 0) 
			nameStr = "'"+tableName[i] + "'";
		else 
			nameStr += ",'" + tableName[i]+"'"; 
	}
	sql += " WHERE A.name in (" + nameStr + ")";
}
//执行sql
var gridDataGroup = datasrcService.executeNoCacheable(dataSourceId, sql);
System.out.println("别名个数:"+gridDataGroup.getRowsCount());
var dataSource = mds.getDataSource(dataSourceId);
var tables = dataSource.getTables();
//设置会话
var req = new FakeHttpRequest();
StateModule.getInstance().setRequest(req);
StateModule.getInstance().setSession(req.getSession());
req.getSession().setAttribute("state", new State());
StateModule.getInstance().setCurrentUser(UserManagerModule.getInstance().getUserByName("admin"));
//开始同步字段注释		
for (var i = 0; i < gridDataGroup.getRowsCount(); i++) {
	var hasUpdateOneField = false;
	//获取查询结果【表名、字段名称、注释】
    var tableName   = gridDataGroup.get(i, 0).getValue();
    var fieldName   = gridDataGroup.get(i, 1).getValue();
    var fieldAlias	= gridDataGroup.get(i, 2).getValue();
    if(fieldAlias && !"".equals(fieldAlias)){
    	for(var j = 0 ; j < tables.size() ; j++){
    		var table = tables.get(j);
    		if(table.getName().equals(tableName)){
    			var fields = table.getFields();
    			for(var k = 0 ; k < fields.size() ; k++){
    			    var field = fields.get(k);
    				if(field.getName().equals(fieldName) && !fieldAlias.equals(field.getAlias())){
    					field.setAlias(fieldAlias);
    					hasUpdateOneField = true;
    				    try{
    					    mds.updateField(field,true);//更新字段
    				    }catch(e){
							//数据库中可能存在同名注释,在同名注释后加_fieldName,
    				        field.setAlias(fieldAlias+"_"+fieldName);
                            mds.updateField(field,true); //更新字段
    				    }
    					break;
    				}
    			}
    		}
    		if(hasUpdateOneField){
    			break;
    		}
    	}
    }
}

...