Compare commits

...

18 Commits

Author SHA1 Message Date
jzhao
abb879213b feat(TDI-44179):support copy command in Azure synapse bulk load (#4681)
* feat(TDI-44179):support copy command in Azure synapse bulk load



* fix(TDI-44179):create table options



* fix(TDI-44179):add column to source field mapping



* fix(TDI-44179):change some parameter to list



* fix(TDI-44179):change default load method and add migrationtask



* fix(TDI-44179):only show "error file location" for csv file format



* fix(TDI-44179):fix some issue



* hide error file location for shared access key

* support context for field index

* correct sas token field
2020-05-18 19:03:31 +08:00
jzhao
a263c6bb7f feat(TDI-43719):Enhance Azure SQL data warehouse (#4492)
* feat(TDI-43719):rename tSQLDWHXXX component to tAzureSynapseXXX

* feat(TDI-43719):rename the reference

* feat(TDI-43719):support adls gen2 in tAzureSynapseBulkExec

* feat(TDI-43719):add migration task

* feat(TDI-43719):change the family name

* change the family name and i18n which include DWH
2020-05-13 17:50:59 +08:00
wang wei
f937a8b27d fix(TDI-44159): Data viewer on tSybaseInput get error in context model with sybase 16 anywhere database(#4661) 2020-05-13 14:54:47 +08:00
Richard Lecomte
9454265a67 TDI-43935 : MsSQLRow NString type for prepared statement (#4651) 2020-05-12 13:58:12 +02:00
Dmytro Sylaiev
a9e7d7b09a feat(TDI-44188): Dsylaiev/tdi 39575 active directory for mssql (#4584)
* feat(TDI-39575): Add AD auth support for AzureSynapse

* feat(TDI-39575): Add AD Auth support for MsSQL components

* feat(TDI-39575): Provide AD feature for tCreateTable
2020-05-12 13:28:49 +03:00
pyzhou
afb079f6f3 fix(TDI-44130):move log to finally (#4652) (#4673) 2020-05-11 16:34:48 +08:00
wang wei
0294795b51 fix(TDI-43619): Null Value Treated as <TALEND_NULL> in Subjob (#4488) (#4655) 2020-05-08 11:58:00 +08:00
pyzhou
f5cc930f5f fix(TDI-44051):add the real value to the db name (#4621) (#4642)
* fix(TDI-44051):add the real value to the db name

* set dbName as name when db column is null

* workaround

* change back name
2020-04-29 20:22:44 +08:00
Zhiwei Xue
f7e0e22d0b fix(TUP-26809):Job zip should not contain jars from testcase only (#4635) 2020-04-27 18:00:38 +08:00
Zhiwei Xue
54bfc6bb81 Patch/7.3.1 TPS-3839 monthly patch backport (#4626)
* Kjwang/fix tup 26264 t elt map generated query has extra symbols (#4489)

* Fix TUP-26264 tELTMap generated query has extra symbols generated when
more input mapping in component
https://jira.talendforge.org/browse/TUP-26264

* Fix TUP-26264 tELTMap generated query has extra symbols generated when
more input mapping in component
https://jira.talendforge.org/browse/TUP-26264

* fix(TUP-26482):[Studio] Studio is very slow to build the job(the (#4546)

performance issue)

* fix(TUP-26213):Compilation issue after migration to v7.2 (#4478)

* fix(TUP-26189): [7.2.1] snowflake metadata connection with proxy failure (#4498) (#4503)

https://jira.talendforge.org/browse/TUP-26189

* fix(TUP-26156)tCreateTable change DBType and Property Type not work (#4465) (#4618)

* fix(TUP-26156)tCreateTable: change "DBType" and "Property Type" not work
https://jira.talendforge.org/browse/TUP-26156

* fix(TUP-26156)tCreateTable: change "DBType" and "Property Type" not work
https://jira.talendforge.org/browse/TUP-26156

* fix(TUP-26156)tCreateTable change DBType and Property Type not work
https://jira.talendforge.org/browse/TUP-26156

Co-authored-by: kjwang <kjwang@talend.com>
Co-authored-by: Jane Ding <35018295+jding-tlnd@users.noreply.github.com>
2020-04-17 14:44:36 +08:00
Dmytro Sylaiev
5d81348f41 patch(TPS-3862): Apply fix for related issue (#4608) 2020-04-10 19:22:33 +03:00
AlixMetivier
7fd431d8cb fix(TBD-10158): fix migration task (#4510) (#4583) 2020-04-09 17:41:55 +02:00
Zhiwei Xue
0eef8c764e fix(TUP-26728):Missing spark dependencies when using test cases 2020-04-08 23:35:22 +08:00
hcyi
c959cc95ce fix(TUP-26580):DI job with Big Data components fail when using the custom hadoop conf file location feature. (#4560) (#4571)
* fix(TUP-26580):DI job with Big Data components fail when using the
custom hadoop conf file location feature.

* fix(TUP-26580):DI job with Big Data components fail when using the
custom hadoop conf file location feature.
2020-03-27 18:56:59 +08:00
Jane Ding
80dbe96346 fix(TUP-26576):Warning pops up cannot connect to the user libraries (#4553)
artifact repository set in administrator
https://jira.talendforge.org/browse/TUP-26576
2020-03-26 14:56:50 +08:00
Jane Ding
bcc4abeb64 Revert "Temp tps 3845 (#4565)" (#4566)
This reverts commit 908baade0b.
2020-03-26 14:47:35 +08:00
Jane Ding
908baade0b Temp tps 3845 (#4565)
* fix(TUP-26576):Warning pops up cannot connect to the user libraries (#4553)

artifact repository set in administrator
https://jira.talendforge.org/browse/TUP-26576

* fix(TUP-26580):DI job with Big Data components fail when using the
custom hadoop conf file location feature.

* fix(TUP-26580):DI job with Big Data components fail when using the
custom hadoop conf file location feature.

Co-authored-by: hcyi <hcyi@talend.com>
2020-03-26 12:19:47 +08:00
Dmytro Sylaiev
8aa65ca92b Dsylaiev/tdi 43810 add ignore service attr checkbox for xml (#4539)
* fix(TDI-43810): Fix for xml component

* fix(TDI-43810): Do not ignore service attr when checkbox is hidden

* fix(TDI-43810): Use hashset instead of arraylist

* fix(TDI-43810): Minor refactoring
2020-03-24 15:12:50 +02:00
187 changed files with 3506 additions and 3572 deletions

View File

@@ -619,7 +619,16 @@
} //endIf
%>
context.setContextType("<%=ctxParam.getName()%>", "<%=ctxParam.getType()%>");
if(context.getStringValue("<%=ctxParam.getName()%>") == null) {
context.<%=ctxParam.getName()%> = null;
} else {
<%//}B1 block%>
<%
String typeToGenerate ="String";
if( !(ctxParam.getType().equals("id_File") || ctxParam.getType().equals("id_Directory") ||ctxParam.getType().equals("id_List Of Value"))) {
typeToGenerate=JavaTypesManager.getTypeToGenerate(ctxParam.getType(),true);
}
if (ctxParam.getType().equals("id_Password")) {
%>
String pwd_<%=ctxParam.getName()%>_value = context.getProperty("<%=ctxParam.getName()%>");
@@ -637,13 +646,7 @@
}
}
<%
continue;
}
String typeToGenerate ="String";
if( !(ctxParam.getType().equals("id_File") || ctxParam.getType().equals("id_Directory") ||ctxParam.getType().equals("id_List Of Value"))) {
typeToGenerate=JavaTypesManager.getTypeToGenerate(ctxParam.getType(),true);
}
if(typeToGenerate.equals("java.util.Date")) {
} else if(typeToGenerate.equals("java.util.Date")) {
%>
try{
String context_<%=ctxParam.getName()%>_value = context.getProperty("<%=ctxParam.getName()%>");
@@ -702,6 +705,10 @@
}
<%
}
%>
<%//{B1 block%>
}
<%
}
%>
} <%/*close last method*/%>
@@ -872,20 +879,6 @@ if(execStat) {
}
%>
<%if (hadoopClusterIds.size() > 1) {%>
System.err.println("Only one hadoop configuration is allowed in one job!");
<%}%>
<%
// run tHadoopConfManager component if there is it.
if(!hadoopConfNodes.isEmpty()) {
INode hadoopConfNode = hadoopConfNodes.get(0);
%>
<%=createCallProcess(hadoopConfNode, className, false) %>
<%
}
%>
<%
//2. load implicit contextload
if(implicit_Context != null) {
@@ -908,6 +901,19 @@ this.globalResumeTicket = true;//to run tPreJob
}
%>
<%if (hadoopClusterIds.size() > 1) {%>
System.err.println("Only one hadoop configuration is allowed in one job!");
<%}%>
<%
// run tHadoopConfManager component if there is it.
if(!hadoopConfNodes.isEmpty()) {
INode hadoopConfNode = hadoopConfNodes.get(0);
%>
<%=createCallProcess(hadoopConfNode, className, false) %>
<%
}
%>
<%
//4. flush the begin msg

View File

@@ -62,6 +62,8 @@ class IndexedRecordToRowStructGenerator {
%>
boolean <%=codeVarIsDynamicInitialized%> = false;
routines.system.Dynamic <%=codeVarDynamic%> = new routines.system.Dynamic();
//Workaround for TDI-44051, TcimpV0 do not need DbmsID
<%=codeVarDynamic%>.setDbmsId("<%=cid%>");
<%
}
@@ -115,10 +117,11 @@ class IndexedRecordToRowStructGenerator {
for (org.apache.avro.Schema.Field dynamicField_<%=cid%> : dynSchema_<%=cid%>.getFields()){
routines.system.DynamicMetadata dynamicMetadata_<%=cid%> = new routines.system.DynamicMetadata();
org.apache.avro.Schema dynamicFieldSchema_<%=cid%> = dynamicField_<%=cid%>.schema();
String dbName = dynamicField_<%=cid%>.getProp("talend.field.dbColumnName");
// set name
dynamicMetadata_<%=cid%>.setName(dynamicField_<%=cid%>.name());
// set db name
dynamicMetadata_<%=cid%>.setDbName(dynamicField_<%=cid%>.name());
dynamicMetadata_<%=cid%>.setDbName(dbName==null?dynamicField_<%=cid%>.name():dbName);
// set nullable
if (org.talend.daikon.avro.AvroUtils.isNullable(dynamicFieldSchema_<%=cid%>)) {
dynamicMetadata_<%=cid%>.setNullable(true);

View File

@@ -298,6 +298,15 @@ if(isRunInMultiThread){
}
<% } %>
}
//if the stored or passed value is "<TALEND_NULL>" string, it mean null
public String getStringValue(String key) {
String origin_value = this.getProperty(key);
if(NULL_VALUE_EXPRESSION_IN_COMMAND_STRING_FOR_CHILD_JOB_ONLY.equals(origin_value)) {
return null;
}
return origin_value;
}
<%
for (IContextParameter ctxParam :params)

View File

@@ -28,9 +28,9 @@ import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Optional;
import java.util.ResourceBundle;
import java.util.Set;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.Lock;
@@ -70,7 +70,6 @@ import org.talend.core.model.components.ComponentCategory;
import org.talend.core.model.components.ComponentManager;
import org.talend.core.model.components.ComponentProviderInfo;
import org.talend.core.model.components.ComponentUtilities;
import org.talend.core.model.components.EComponentType;
import org.talend.core.model.components.IComponent;
import org.talend.core.model.components.IComponentsFactory;
import org.talend.core.model.components.IComponentsHandler;
@@ -838,23 +837,21 @@ public class ComponentsFactory implements IComponentsFactory {
init(false);
}
for (IComponent comp : componentList) {
if (comp.getComponentType() != EComponentType.JOBLET) {
continue;
}
String comName = comp.getName();
if (comp != null && paletteType.equals(comp.getPaletteType())) {
if (comName.equals(name)) {
return comp;
} else if (new JobletUtil().matchExpression(comName)) {
String[] names = comName.split(":"); //$NON-NLS-1$
comName = names[1];
if (comName.equals(name)) {
return comp;
}
// check if reference joblet component presents
JobletUtil jobletUtils = new JobletUtil();
Optional<IComponent> result = jobletUtils.findComponentByName(componentList, name, paletteType);
if (!result.isPresent()) {
// check if any name matching joblet component presents
if (jobletUtils.matchExpression(name)) {
name = StringUtils.substringAfterLast(name, ":"); //$NON-NLS-1$
if (StringUtils.isNotBlank(name)) {
result = jobletUtils.findComponentByName(componentList, name, paletteType);
}
}
}
if (result.isPresent()) {
return result.get();
}
return null;
}

View File

@@ -22,16 +22,6 @@ skeleton="../templates/db_output_bulk.skeleton"
INode node = (INode)codeGenArgument.getArgument();
String cid = node.getUniqueName();
String storageType = ElementParameterParser.getValue(node, "__AZURE_STORAGE__");
String accountName = ElementParameterParser.getValue(node, "__ACCOUNT_NAME__");
String clientId = ElementParameterParser.getValue(node, "__CLIENT_ID__");
String oauthEndpoint = ElementParameterParser.getValue(node, "__ENDPOINT__");
String container = ElementParameterParser.getValue(node, "__CONTAINER__");
String azureFolder = ElementParameterParser.getValue(node, "__AZURE_LOCATION__");
boolean isLog4jEnabled = ("true").equals(ElementParameterParser.getValue(node.getProcess(), "__LOG4J_ACTIVATE__"));
%>
@@ -62,238 +52,66 @@ skeleton="../templates/db_output_bulk.skeleton"
String tableAction = ElementParameterParser.getValue(node,"__TABLE_ACTION__");
String fieldSeparator = ElementParameterParser.getValueWithUIFieldKey(node,"__FIELDSEPARATOR__","FIELDSEPARATOR");
String loadFileFormat = ElementParameterParser.getValue(node,"__IMPORT_TYPE__");
boolean dateFormat = "true".equals(ElementParameterParser.getValue(node,"__DATE_FORMAT__"));
String datePattern = ElementParameterParser.getValue(node,"__DATE_PATTERN__");
boolean useStringDelimiter = "true".equals(ElementParameterParser.getValue(node,"__USE_STRING_DELIMITER__"));
String stringDelimiter = ElementParameterParser.getValueWithUIFieldKey(node,"__STRINGDELIMITER__","STRINGDELIMITER");
boolean isTypeDefault = "true".equals(ElementParameterParser.getValue(node,"__USE_TYPE_DEFAULT__"));
boolean useActiveDirectoryAuth = "true".equals(ElementParameterParser.getValue(node, "__ACTIVE_DIR_AUTH__"));
// PolyBase & Copy shared config
boolean isPolyBase = "POLYBASE".equals(ElementParameterParser.getValue(node,"__LOAD_METHOD__"));
String storageType = ElementParameterParser.getValue(node, "__AZURE_STORAGE__");
String accountName = ElementParameterParser.getValue(node, "__ACCOUNT_NAME__");
String container = ElementParameterParser.getValue(node, "__CONTAINER__");
String azureFolder = ElementParameterParser.getValue(node, "__AZURE_LOCATION__");
boolean isCompress = "true".equals(ElementParameterParser.getValue(node, "__COMPRESS__"));
String compressionType = null;
String serdeMethod = ElementParameterParser.getValue(node,"__SERDE_METHOD__");
if (isCompress) {
if ("DELIMITED_TEXT".equals(loadFileFormat)) {
compressionType = ElementParameterParser.getValue(node,"__COMPRESSION_TEXT__");
} else if ("HIVE_RCFILE".equals(loadFileFormat)) {
compressionType = ElementParameterParser.getValue(node,"__COMPRESSION_RC__");
} else if ("HIVE_ORC".equals(loadFileFormat)) {
compressionType = ElementParameterParser.getValue(node,"__COMPRESSION_ORC__");
} else if ("PARQUET".equals(loadFileFormat)) {
compressionType = ElementParameterParser.getValue(node,"__COMPRESSION_PARQUET__");
}
}
String fileFormatType= null;
if ("DELIMITED_TEXT".equals(loadFileFormat)) {
fileFormatType = "DelimitedText";
} else if ("HIVE_RCFILE".equals(loadFileFormat)) {
fileFormatType = "RCFILE";
} else if ("HIVE_ORC".equals(loadFileFormat)) {
fileFormatType = "ORC";
} else if ("PARQUET".equals(loadFileFormat)) {
fileFormatType = "PARQUET";
}
// External Table Reject Options
boolean isEnabledExtTableOptions = "true".equals(ElementParameterParser.getValue(node, "__EXT_TABLE_OPTIONS__"));
String rejectType = ElementParameterParser.getValue(node,"__REJECT_TYPE__");
String rejectValue = ElementParameterParser.getValue(node,"__REJECT_VALUE__");
String rejectSampleValue = ElementParameterParser.getValue(node,"__REJECT_SAMPLE_VALUE__");
String DistributionOption = ElementParameterParser.getValue(node,"__DISTRIBUTION__");
String DistributionColumnName = ElementParameterParser.getValue(node,"__DISTRIBUTION_COLUMN_NAME__");
String TableOption = ElementParameterParser.getValue(node,"__TABLE_OPTION__");
String IndexColumns = ElementParameterParser.getValue(node,"__INDEX_COLUMNS__");
boolean isEnabled_Partition = "true".equals(ElementParameterParser.getValue(node, "__PARTITION__"));
String PartitionColumnName = ElementParameterParser.getValue(node,"__PARTITION_COLUMN_NAME__");
String PartitionRange = ElementParameterParser.getValue(node,"__PARTITION_COLUMN_NAME_RANGE__");
String PartitionValues = ElementParameterParser.getValue(node,"__PARTITION_VALUES__");
// External Table Reject Options END
%>
final String OUT_DELIM_<%=cid %> = <%=fieldSeparator %>;
String randomIdentifier_<%=cid%> = java.util.UUID.randomUUID().toString().replaceAll("-","");
String azureCredIdentity_<%=cid%> = "";
String azureCredName_<%=cid%> = "";
String azureContainer_<%=cid%> = "";
<%
String passwordFieldName = null;
if(isPolyBase){
if ("ADLS".equals(storageType)) {
passwordFieldName = "__PRINCIPAL_KEY__";
}else{
passwordFieldName = "__SECRET_KEY__";
}
}else{// Copy command
String authMethod = ElementParameterParser.getValue(node,"__AUTH_METHOD__");
if ("KEY".equals(authMethod)) {
passwordFieldName = "__SECRET_KEY__";
}
}
%>
String dbschema_<%=cid%> = null;
//external tableName
String ext_tableName_<%=cid%> = null;
String tableName_<%=cid%> = null;
String azureFolder_<%=cid%> = <%=azureFolder%>;
String clientId_<%=cid%> = <%=clientId%>;
String oauthEndpoint_<%=cid%> = <%=oauthEndpoint%>;
<%
String passwordFieldName = "";
if ("ADLS".equals(storageType)) {
passwordFieldName = "__PRINCIPAL_KEY__";
}else{
passwordFieldName = "__SECRET_KEY__";
}
if (ElementParameterParser.canEncrypt(node, passwordFieldName)) {
%>
final String azureAccessKey_<%=cid%> = routines.system.PasswordEncryptUtil.decryptPassword(<%=ElementParameterParser.getEncryptedValue(node, passwordFieldName)%>);
<%
} else {
%>
final String azureAccessKey_<%=cid%> = <%= ElementParameterParser.getValue(node, passwordFieldName)%>;
<%
}
if ("ADLS".equals(storageType)) {
%>
azureCredIdentity_<%=cid%> = clientId_<%=cid%> + "@" + oauthEndpoint_<%=cid%>;
azureCredName_<%=cid%> = "talend_ADLCredential_" + randomIdentifier_<%=cid%>;
<%
} else {
%>
azureCredIdentity_<%=cid%> = "talend";
azureCredName_<%=cid%> = "talend_AzureStorageCredential_" + randomIdentifier_<%=cid%>;
azureContainer_<%=cid%> = <%=container%>;
<%
}
%>
String azureAccountName_<%=cid%> = <%=accountName%>;
String azureExtDataSrc_<%=cid%> = "talend_DataSource_" + randomIdentifier_<%=cid%>;
String randomIdentifier_<%=cid%> = java.util.UUID.randomUUID().toString().replaceAll("-","");
String azureExtFileFormat_<%=cid%> = "talend_FileFormat_" + randomIdentifier_<%=cid%>;
String azureFileLoadType_<%=cid%> = "<%=loadFileFormat%>";
String dwDistributionOptions_<%=cid%> = "";
String dwTableOptions_<%=cid%> = "";
String dwPartition_<%=cid%> = "";
<%
List<IMetadataColumn> columnList = getColumnList(node);
List<Column> stmtStructure = null;
Manager manager = null;
boolean isDynamic = false;
List<IMetadataTable> metadatas = node.getMetadataList();
if ((metadatas!=null)&&(metadatas.size()>0)) {
IMetadataTable metadata = metadatas.get(0);
}
if(columnList != null && columnList.size() > 0) {
stmtStructure = getManager(dbmsId, cid).createColumnList(columnList, false, null, null);
}
// NOT AAD
if(passwordFieldName != null){
if (ElementParameterParser.canEncrypt(node, passwordFieldName)) {
%>
final String azureAccessKey_<%=cid%> = routines.system.PasswordEncryptUtil.decryptPassword(<%=ElementParameterParser.getEncryptedValue(node, passwordFieldName)%>);
<%
} else {
%>
//BEGIN CONNECTION Code
java.sql.Connection conn_<%=cid%> = null;
final String azureAccessKey_<%=cid%> = <%= ElementParameterParser.getValue(node, passwordFieldName)%>;
<%
boolean useExistingConnection = "true".equals(ElementParameterParser.getValue(node,"__USE_EXISTING_CONNECTION__"));
%>
String dbUser_<%=cid %> = null;
<%
if(useExistingConnection) {
String connection = ElementParameterParser.getValue(node,"__CONNECTION__");
String conn = "conn_" + connection;
String schema = "dbschema_" + connection;
%>
dbschema_<%=cid%> = (String)globalMap.get("<%=schema%>");
conn_<%=cid%> = (java.sql.Connection)globalMap.get("<%=conn%>");
<%
} else {
%>
dbschema_<%=cid%> = <%=dbschema%>;
String driverClass_<%=cid%> = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
<%dbLog.conn().logJDBCDriver(dbLog.var("driverClass"));%>
java.lang.Class.forName(driverClass_<%=cid%>);
String port_<%=cid%> = <%=dbport%>;
String dbname_<%=cid%> = <%=dbname%> ;
String url_<%=cid %> = "jdbc:sqlserver://" + <%=dbhost%> ;
if (!"".equals(port_<%=cid%>)) {
url_<%=cid %> += ":" + <%=dbport%>;
}
if (!"".equals(dbname_<%=cid%>)) {
url_<%=cid%> += ";database=" + <%=dbname%>;
}
url_<%=cid%> += ";applicationName=Talend;" + <%=dbproperties%>;
dbUser_<%=cid %> = <%=dbuser%>;
<%
passwordFieldName = "__PASS__";
%>
<%@ include file="@{org.talend.designer.components.localprovider}/components/templates/password.javajet"%>
String dbPwd_<%=cid %> = decryptedPassword_<%=cid%>;
<%dbLog.conn().connTry(dbLog.var("url"), dbLog.var("dbUser"));%>
conn_<%=cid%> = java.sql.DriverManager.getConnection(url_<%=cid %>,dbUser_<%=cid%>,dbPwd_<%=cid%>);
<%dbLog.conn().connDone(dbLog.var("url"));%>
<%
}
%>
// END CONNECTION Code
<%
if(!useExistingConnection) {
%>
resourceMap.put("conn_<%=cid%>", conn_<%=cid%>);
conn_<%=cid%>.setAutoCommit(true);
<%
}
dbLog.commit().logAutoCommit("conn_"+cid+".getAutoCommit()");
%>
if(dbschema_<%=cid%> == null || dbschema_<%=cid%>.trim().length() == 0) {
ext_tableName_<%=cid%> = <%=table%> + "_" + randomIdentifier_<%=cid%>;
} else {
ext_tableName_<%=cid%> = dbschema_<%=cid%> + "].[" + <%=table%> + "_" + randomIdentifier_<%=cid%>;
}
if(dbschema_<%=cid%> == null || dbschema_<%=cid%>.trim().length() == 0) {
tableName_<%=cid%> = <%=table%>;
} else {
tableName_<%=cid%> = dbschema_<%=cid%> + "].[" + <%=table%>;
}
<%
if(isEnabledExtTableOptions){
%>
String externalTableRejectOptions_<%=cid%> = "REJECT_TYPE = <%=rejectType%>" + ",REJECT_VALUE = " + <%=rejectValue%>;
<%
if("Percentage".equals(rejectType)){
%>
externalTableRejectOptions_<%=cid%> += ",REJECT_SAMPLE_VALUE = " + <%=rejectSampleValue%>;
<%
}
}
if(("DROP_CREATE").equals(tableAction) || ("CREATE").equals(tableAction) || ("CREATE_IF_NOT_EXISTS").equals(tableAction) || ("DROP_IF_EXISTS_AND_CREATE").equals(tableAction)) {
// DW Table Options
@@ -335,7 +153,177 @@ skeleton="../templates/db_output_bulk.skeleton"
<%
}
// DW Table Partition END
}
%>
String azureAccountName_<%=cid%> = <%=accountName%>;
<%
List<IMetadataColumn> columnList = getColumnList(node);
List<Column> stmtStructure = null;
Manager manager = null;
boolean isDynamic = false;
List<IMetadataTable> metadatas = node.getMetadataList();
if ((metadatas!=null)&&(metadatas.size()>0)) {
IMetadataTable metadata = metadatas.get(0);
}
if(columnList != null && columnList.size() > 0) {
stmtStructure = getManager(dbmsId, cid).createColumnList(columnList, false, null, null);
}
%>
//BEGIN CONNECTION Code
java.sql.Connection conn_<%=cid%> = null;
<%
boolean useExistingConnection = "true".equals(ElementParameterParser.getValue(node,"__USE_EXISTING_CONNECTION__"));
%>
String dbUser_<%=cid %> = null;
<%
if(useExistingConnection) {
String connection = ElementParameterParser.getValue(node,"__CONNECTION__");
String conn = "conn_" + connection;
String schema = "dbschema_" + connection;
%>
dbschema_<%=cid%> = (String)globalMap.get("<%=schema%>");
conn_<%=cid%> = (java.sql.Connection)globalMap.get("<%=conn%>");
<%
} else {
%>
dbschema_<%=cid%> = <%=dbschema%>;
String driverClass_<%=cid%> = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
<%dbLog.conn().logJDBCDriver(dbLog.var("driverClass"));%>
java.lang.Class.forName(driverClass_<%=cid%>);
String port_<%=cid%> = <%=dbport%>;
String dbname_<%=cid%> = <%=dbname%> ;
String url_<%=cid %> = "jdbc:sqlserver://" + <%=dbhost%> ;
if (!"".equals(port_<%=cid%>)) {
url_<%=cid %> += ":" + <%=dbport%>;
}
if (!"".equals(dbname_<%=cid%>)) {
url_<%=cid%> += ";database=" + <%=dbname%>;
}
<%
if (useActiveDirectoryAuth) {
%>
url_<%=cid%> += ";encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;Authentication=ActiveDirectoryPassword";
<%
}
%>
url_<%=cid%> += ";applicationName=Talend;" + <%=dbproperties%>;
dbUser_<%=cid %> = <%=dbuser%>;
<%
passwordFieldName = "__PASS__";
%>
<%@ include file="@{org.talend.designer.components.localprovider}/components/templates/password.javajet"%>
String dbPwd_<%=cid %> = decryptedPassword_<%=cid%>;
<%dbLog.conn().connTry(dbLog.var("url"), dbLog.var("dbUser"));%>
conn_<%=cid%> = java.sql.DriverManager.getConnection(url_<%=cid %>,dbUser_<%=cid%>,dbPwd_<%=cid%>);
<%dbLog.conn().connDone(dbLog.var("url"));%>
<%
}
%>
// END CONNECTION Code
<%
if(!useExistingConnection) {
%>
resourceMap.put("conn_<%=cid%>", conn_<%=cid%>);
conn_<%=cid%>.setAutoCommit(true);
<%
}
dbLog.commit().logAutoCommit("conn_"+cid+".getAutoCommit()");
%>
if(dbschema_<%=cid%> == null || dbschema_<%=cid%>.trim().length() == 0) {
tableName_<%=cid%> = <%=table%>;
} else {
tableName_<%=cid%> = dbschema_<%=cid%> + "].[" + <%=table%>;
}
<%
// PolyBase
if(isPolyBase){
// External Table Reject Options
boolean isEnabledExtTableOptions = "true".equals(ElementParameterParser.getValue(node, "__EXT_TABLE_OPTIONS__"));
String rejectType = ElementParameterParser.getValue(node,"__REJECT_TYPE__");
String rejectValue = ElementParameterParser.getValue(node,"__REJECT_VALUE__");
String rejectSampleValue = ElementParameterParser.getValue(node,"__REJECT_SAMPLE_VALUE__");
// External Table Reject Options END
boolean dateFormat = "true".equals(ElementParameterParser.getValue(node,"__DATE_FORMAT__"));
String fieldSeparator = ElementParameterParser.getValueWithUIFieldKey(node,"__FIELDSEPARATOR__","FIELDSEPARATOR");
String loadFileFormat = ElementParameterParser.getValue(node,"__IMPORT_TYPE__");
String datePattern = ElementParameterParser.getValue(node,"__DATE_PATTERN__");
boolean useStringDelimiter = "true".equals(ElementParameterParser.getValue(node,"__USE_STRING_DELIMITER__"));
String stringDelimiter = ElementParameterParser.getValueWithUIFieldKey(node,"__STRINGDELIMITER__","STRINGDELIMITER");
boolean isTypeDefault = "true".equals(ElementParameterParser.getValue(node,"__USE_TYPE_DEFAULT__"));
String serdeMethod = ElementParameterParser.getValue(node,"__SERDE_METHOD__");
String compressionType = null;
if (isCompress) {
if ("DELIMITED_TEXT".equals(loadFileFormat)) {
compressionType = ElementParameterParser.getValue(node,"__COMPRESSION_TEXT__");
} else if ("HIVE_RCFILE".equals(loadFileFormat)) {
compressionType = ElementParameterParser.getValue(node,"__COMPRESSION_RC__");
} else if ("HIVE_ORC".equals(loadFileFormat)) {
compressionType = ElementParameterParser.getValue(node,"__COMPRESSION_ORC__");
} else if ("PARQUET".equals(loadFileFormat)) {
compressionType = ElementParameterParser.getValue(node,"__COMPRESSION_PARQUET__");
}
}
String fileFormatType= null;
if ("DELIMITED_TEXT".equals(loadFileFormat)) {
fileFormatType = "DelimitedText";
} else if ("HIVE_RCFILE".equals(loadFileFormat)) {
fileFormatType = "RCFILE";
} else if ("HIVE_ORC".equals(loadFileFormat)) {
fileFormatType = "ORC";
} else if ("PARQUET".equals(loadFileFormat)) {
fileFormatType = "PARQUET";
}
String clientId = ElementParameterParser.getValue(node, "__CLIENT_ID__");
String oauthEndpoint = ElementParameterParser.getValue(node, "__ENDPOINT__");
%>
final String OUT_DELIM_<%=cid %> = <%=fieldSeparator %>;
String ext_tableName_<%=cid%> = null;
String azureExtDataSrc_<%=cid%> = "talend_DataSource_" + randomIdentifier_<%=cid%>;
String azureFileLoadType_<%=cid%> = "<%=loadFileFormat%>";
<%
if ("ADLS".equals(storageType)) {
%>
String clientId_<%=cid%> = <%=clientId%>;
String oauthEndpoint_<%=cid%> = <%=oauthEndpoint%>;
String azureCredIdentity_<%=cid%> = clientId_<%=cid%> + "@" + oauthEndpoint_<%=cid%>;
String azureCredName_<%=cid%> = "talend_ADLCredential_" + randomIdentifier_<%=cid%>;
<%
} else {//ADLS Gen2 & Blob Storage
%>
String azureCredIdentity_<%=cid%> = "talend";
String azureCredName_<%=cid%> = "talend_AzureStorageCredential_" + randomIdentifier_<%=cid%>;
String azureContainer_<%=cid%> = <%=container%>;
<%
}
%>
if(dbschema_<%=cid%> == null || dbschema_<%=cid%>.trim().length() == 0) {
ext_tableName_<%=cid%> = <%=table%> + "_" + randomIdentifier_<%=cid%>;
} else {
ext_tableName_<%=cid%> = dbschema_<%=cid%> + "].[" + <%=table%> + "_" + randomIdentifier_<%=cid%>;
}
<%
if(isEnabledExtTableOptions){
%>
String externalTableRejectOptions_<%=cid%> = "REJECT_TYPE = <%=rejectType%>" + ",REJECT_VALUE = " + <%=rejectValue%>;
<%
if("Percentage".equals(rejectType)){
%>
externalTableRejectOptions_<%=cid%> += ",REJECT_SAMPLE_VALUE = " + <%=rejectSampleValue%>;
<%
}
}
if(columnList != null && columnList.size()>0) {
@@ -373,6 +361,11 @@ skeleton="../templates/db_output_bulk.skeleton"
if ("ADLS".equals(storageType)) {
%>
stmtCreateExtDataSource_<%=cid%>.execute("CREATE EXTERNAL DATA SOURCE " + azureExtDataSrc_<%=cid%> + " WITH (TYPE=HADOOP, LOCATION = 'adl://" + azureAccountName_<%=cid%> + ".azuredatalakestore.net', CREDENTIAL = " + azureCredName_<%=cid%> + ")");
<%
}else if ("ADLS_GEN2".equals(storageType)) {
boolean enableSSL = "true".equals(ElementParameterParser.getValue(node,"__ENABLE_SSL__"));
%>
stmtCreateExtDataSource_<%=cid%>.execute("CREATE EXTERNAL DATA SOURCE " + azureExtDataSrc_<%=cid%> + " WITH (TYPE=HADOOP, LOCATION = 'abfs<%=(enableSSL?"s":"")%>://" + azureContainer_<%=cid%> + "@" + azureAccountName_<%=cid%> + ".dfs.core.windows.net', CREDENTIAL = " + azureCredName_<%=cid%> + ")");
<%
} else {
%>
@@ -786,6 +779,423 @@ skeleton="../templates/db_output_bulk.skeleton"
<%
}
}
}else{
String authMethod = ElementParameterParser.getValue(node,"__AUTH_METHOD__");
String sasToken = ElementParameterParser.getValue(node,"__SAS_TOKEN__");
String endpointSuffix = ElementParameterParser.getValue(node,"__ENDPOINT_SUFFIX__");
List<Map<String,String>> externalPaths = (List<Map<String,String>>)ElementParameterParser.getObjectValue(node, "__EXTERNAL_LOCATIONS__");
boolean specifyFieldsMapping = "true".equals(ElementParameterParser.getValue(node, "__SPECIFY_FIELDS_MAPPING__"));
List<Map<String,String>> fieldsMapping = (List<Map<String,String>>)ElementParameterParser.getObjectValue(node, "__COLUMN_MAP_FIELD__");
String fileType = ElementParameterParser.getValue(node,"__FILE_TYPE__");
String firstRow = ElementParameterParser.getValue(node,"__FIRST_ROW__");
if(firstRow==null || firstRow.isEmpty()){
firstRow = "1";
}
// csv format
String fieldQuote = ElementParameterParser.getValue(node,"__FIELD_QUOTE__");
if(fieldQuote==null || fieldQuote.isEmpty()){
fieldQuote = "\"\"";
}
String fieldTerminator = ElementParameterParser.getValue(node,"__FIELD_TERMINATOR__");
if(fieldTerminator==null || fieldTerminator.isEmpty()){
fieldTerminator = "\"\"";
}
String rowTerminator = ElementParameterParser.getValue(node,"__ROW_TERMINATOR__");
if(rowTerminator==null || rowTerminator.isEmpty()){
rowTerminator = "\"\"";
}
String copyCsvDateFormat = ElementParameterParser.getValue(node,"__COPY_CSV_DATE_FORMAT__");
String encoding = ElementParameterParser.getValue(node,"__ENCODING__");
// csv end
boolean identityInsert = "true".equals(ElementParameterParser.getValue(node,"__IDENTITY_INSERTE__"));
String maxErrors = ElementParameterParser.getValue(node,"__MAX_ERRORS__");
if(maxErrors==null || maxErrors.isEmpty()){
maxErrors = "0";
}
String errorFile = ElementParameterParser.getValue(node,"__ERROR_FILE__");
if(errorFile==null || errorFile.isEmpty()){
errorFile = "\"\"";
}
String compressionType = null;
if (isCompress) {
if ("CSV".equals(fileType)) { //TODO recheck
//compressionType = ElementParameterParser.getValue(node,"__COMPRESSION_TEXT__");
compressionType = "GZIP";
} else if ("ORC".equals(fileType)) {
compressionType = ElementParameterParser.getValue(node,"__COMPRESSION_ORC__");
} else if ("PARQUET".equals(fileType)) {
compressionType = ElementParameterParser.getValue(node,"__COMPRESSION_PARQUET__");
}
}
if("SAS".equals(authMethod)){
%>
String azureCredIdentity_<%=cid%> = "Shared Access Signature";
<%
}else if("KEY".equals(authMethod)){
%>
String azureCredIdentity_<%=cid%> = "Storage Account Key";
<%
}else if("AAD".equals(authMethod)){
%>
// CREDENTIAL is not required for AAD
<%
}
if ("CSV".equals(fileType)) {
%>
String fieldQuote_<%=cid%> = <%=fieldQuote%>;
String fieldTerminator_<%=cid%> = <%=fieldTerminator%>;
String rowTerminator_<%=cid%> = <%=rowTerminator%>;
String errorFile_<%=cid%> = <%=errorFile%>;
<%
}
%>
Integer firstRow_<%=cid%> = <%=firstRow%>;
Integer maxErrors_<%=cid%> = <%=maxErrors%>;
<%
manager = getManager(dbmsId, cid);
String ending="";
if(!"CSV".equals(fileType)){
// stores the file type and compression method for the external data
%>
boolean extFileFormatCreated_<%=cid%> = false;
StringBuilder cmdExtFileFormat_<%=cid%> = new StringBuilder();
java.sql.Statement stmtCreateExtFileFormat_<%=cid%> = conn_<%=cid%>.createStatement();
cmdExtFileFormat_<%=cid%>.append("CREATE EXTERNAL FILE FORMAT ").append(azureExtFileFormat_<%=cid%>).append(" WITH (FORMAT_TYPE = <%=fileType%>");
<%
if (isCompress && compressionType != null){
%>
cmdExtFileFormat_<%=cid%>.append(", DATA_COMPRESSION = '<%=compressionType%>'");
<%
}
%>
cmdExtFileFormat_<%=cid%>.append(")");
stmtCreateExtFileFormat_<%=cid%>.execute(cmdExtFileFormat_<%=cid%>.toString());
stmtCreateExtFileFormat_<%=cid%>.close();
extFileFormatCreated_<%=cid%> = true;
<%
if(isLog4jEnabled) {
%>
log.info("<%=cid%> - Created External File Format: " + azureExtFileFormat_<%=cid%> + " successfully.");
<%
}
}
%>
// CREATE DW TABLE AND / OR INSERT INTO DW TABLE
try{
<%
if(!("NONE").equals(tableAction)) {
if(("DROP_CREATE").equals(tableAction) || ("CREATE").equals(tableAction) || ("CREATE_IF_NOT_EXISTS").equals(tableAction) || ("DROP_IF_EXISTS_AND_CREATE").equals(tableAction)) {
if(columnList == null || columnList.size()<= 0) {
%>
if(true){
throw new RuntimeException("Can't create table with empty schema!");
}
<%
}
}
if(("DROP_CREATE").equals(tableAction)) {
%>
java.sql.Statement stmtDrop_<%=cid%> = conn_<%=cid%>.createStatement();
<%dbLog.table().dropTry(dbLog.var("tableName"));%>
stmtDrop_<%=cid%>.execute("DROP TABLE [" + tableName_<%=cid%> + "]");
<%dbLog.table().dropDone(dbLog.var("tableName"));%>
stmtDrop_<%=cid%>.close();
<%
if(columnList != null && columnList.size()>0) {
%>
java.sql.Statement stmtCreate_<%=cid%> = conn_<%=cid%>.createStatement();
<%dbLog.table().createTry(dbLog.var("tableName"));%>
stmtCreate_<%=cid%>.execute("<%=manager.getCreateTableSQL(stmtStructure)%>) WITH (" + dwTableOptions_<%=cid%> + dwDistributionOptions_<%=cid%> + dwPartition_<%=cid%> + ")");
<%dbLog.table().createDone(dbLog.var("tableName"));%>
stmtCreate_<%=cid%>.close();
<%
}
%>
<%
} else if(("CREATE").equals(tableAction)) {
if(columnList != null && columnList.size()>0) {
%>
java.sql.Statement stmtCreate_<%=cid%> = conn_<%=cid%>.createStatement();
<%dbLog.table().createTry(dbLog.var("tableName"));%>
stmtCreate_<%=cid%>.execute("<%=manager.getCreateTableSQL(stmtStructure)%>) WITH (" + dwTableOptions_<%=cid%> + dwDistributionOptions_<%=cid%> + dwPartition_<%=cid%> + ")");
<%dbLog.table().createDone(dbLog.var("tableName"));%>
stmtCreate_<%=cid%>.close();
<%
}
} else if(("CREATE_IF_NOT_EXISTS").equals(tableAction) || ("DROP_IF_EXISTS_AND_CREATE").equals(tableAction)) {
boolean tableNameCaseSensitive=false;
%>
//check if table exists
java.sql.Statement isExistStmt_<%=cid%> = conn_<%=cid%>.createStatement();
boolean whetherExist_<%=cid%> = false;
try {
isExistStmt_<%=cid%>.execute("SELECT TOP 1 1 FROM [" + tableName_<%=cid%> + "]" );
whetherExist_<%=cid%> = true;
} catch (java.lang.Exception e){
whetherExist_<%=cid%> = false;
}
isExistStmt_<%=cid%>.close();
<%
if(("CREATE_IF_NOT_EXISTS").equals(tableAction)) {
if(columnList != null && columnList.size()>0) {
%>
if(!whetherExist_<%=cid%>) {
java.sql.Statement stmtCreate_<%=cid%> = conn_<%=cid%>.createStatement();
<%dbLog.table().createTry(dbLog.var("tableName"));%>
stmtCreate_<%=cid%>.execute("<%=manager.getCreateTableSQL(stmtStructure)%>) WITH (" + dwTableOptions_<%=cid%> + dwDistributionOptions_<%=cid%> + dwPartition_<%=cid%> + ")");
<%dbLog.table().createDone(dbLog.var("tableName"));%>
stmtCreate_<%=cid%>.close();
}
<%
}
} else {
%>
if(whetherExist_<%=cid%>) {
java.sql.Statement stmtDrop_<%=cid%> = conn_<%=cid%>.createStatement();
<%dbLog.table().dropTry(dbLog.var("tableName"));%>
stmtDrop_<%=cid%>.execute("DROP TABLE [" + tableName_<%=cid%> + "]");
<%dbLog.table().dropDone(dbLog.var("tableName"));%>
stmtDrop_<%=cid%>.close();
}
<%
if(columnList != null && columnList.size()>0) {
%>
java.sql.Statement stmtCreate_<%=cid%> = conn_<%=cid%>.createStatement();
<%dbLog.table().createTry(dbLog.var("tableName"));%>
stmtCreate_<%=cid%>.execute("<%=manager.getCreateTableSQL(stmtStructure)%>) WITH (" + dwTableOptions_<%=cid%> + dwDistributionOptions_<%=cid%> + dwPartition_<%=cid%> + ")");
<%dbLog.table().createDone(dbLog.var("tableName"));%>
stmtCreate_<%=cid%>.close();
<%
}
}
} else if(("CLEAR").equals(tableAction)) {
%>
java.sql.Statement stmtClear_<%=cid%> = conn_<%=cid%>.createStatement();
<%dbLog.table().clearTry(dbLog.var("tableName"));%>
stmtClear_<%=cid%>.executeUpdate("<%=manager.getDeleteTableSQL()%>");
<%dbLog.table().clearDone(dbLog.var("tableName"));%>
stmtClear_<%=cid%>.close();
<%
} else if(("TRUNCATE").equals(tableAction)) {
%>
java.sql.Statement stmtTruncCount_<%=cid%> = conn_<%=cid%>.createStatement();
java.sql.ResultSet rsTruncCount_<%=cid%> = stmtTruncCount_<%=cid%>.executeQuery("<%=manager.getSelectionSQL()%>");
int rsTruncCountNumber_<%=cid%> = 0;
if(rsTruncCount_<%=cid%>.next()) {
rsTruncCountNumber_<%=cid%> = rsTruncCount_<%=cid%>.getInt(1);
}
rsTruncCount_<%=cid%>.close();
stmtTruncCount_<%=cid%>.close();
java.sql.Statement stmtTrunc_<%=cid%> = conn_<%=cid%>.createStatement();
<%dbLog.table().truncateTry(dbLog.var("tableName"));%>
stmtTrunc_<%=cid%>.executeUpdate("<%=manager.getTruncateTableSQL()%>");
<%dbLog.table().truncateDone(dbLog.var("tableName"));%>
<%
if(isLog4jEnabled) {
%>
log.info("<%=cid%> - Number of Rows Truncated : " + rsTruncCountNumber_<%=cid%> + ".");
<%
}
%>
stmtTrunc_<%=cid%>.close();
<%
}
}
%>
StringBuilder copySQL_<%=cid%> = new StringBuilder();
copySQL_<%=cid%>.append("COPY INTO [" + tableName_<%=cid%> + "] ");
<%
if(specifyFieldsMapping){
if(columnList != null && columnList.size()>0) {
%>
copySQL_<%=cid%>.append("(");
<%
for(int columnIndex = 0;columnIndex<columnList.size();columnIndex++){
IMetadataColumn column = columnList.get(columnIndex);
String fieldIndex = fieldsMapping.get(columnIndex).get("FIELD_INDEX");
if(columnIndex != 0){
%>
copySQL_<%=cid%>.append(",");
<%
}
%>
copySQL_<%=cid%>.append("<%=column.getOriginalDbColumnName() %>");
// TODO support default value
<%
if(fieldIndex != null && !fieldIndex.isEmpty()){
%>
copySQL_<%=cid%>.append(" "+<%=fieldIndex%>);
<%
}
}
%>
copySQL_<%=cid%>.append(")");
<%
}
}
%>
copySQL_<%=cid%>.append("");
//external localtion
copySQL_<%=cid%>.append("FROM ");
<%
int pathSize=externalPaths.size();
if(pathSize > 0){
for(int pathIndex = 0;pathIndex<pathSize;pathIndex++){
Map<String, String> externalPathMap = externalPaths.get(pathIndex);
String externalPath = externalPathMap.get("EXTERNAL_LOCATION");
if(pathIndex != 0){
%>
copySQL_<%=cid%>.append(",");
<%
}
%>
copySQL_<%=cid%>.append("'https://"+<%=accountName %>+"."+<%=endpointSuffix %>+"/"+<%=container %>+"/"+<%=externalPath%>+"'");
<%
}
}
%>
copySQL_<%=cid%>.append(" WITH ( ");
<%
if("CSV".equals(fileType)){
%>
copySQL_<%=cid%>.append("FILE_TYPE = 'CSV' ");
<%
}else{
%>
copySQL_<%=cid%>.append("FILE_FORMAT = "+azureExtFileFormat_<%=cid%>+" ");
<%
}
if("KEY".equals(authMethod)){
%>
copySQL_<%=cid%>.append(",CREDENTIAL=(IDENTITY= '"+azureCredIdentity_<%=cid%>+"', SECRET='"+azureAccessKey_<%=cid%>+"')");
<%
}
if("SAS".equals(authMethod)){
%>
copySQL_<%=cid%>.append(",CREDENTIAL=(IDENTITY= '"+azureCredIdentity_<%=cid%>+"', SECRET='"+<%=sasToken%>+"')");
<%
}
if("CSV".equals(fileType)){
%>
if(fieldQuote_<%=cid%>!=null && !fieldQuote_<%=cid%>.isEmpty()){
copySQL_<%=cid%>.append(",FIELDQUOTE = '"+ fieldQuote_<%=cid%> +"' ");
}
if(fieldTerminator_<%=cid%>!=null && !fieldTerminator_<%=cid%>.isEmpty()){
copySQL_<%=cid%>.append(",FIELDTERMINATOR = '"+ fieldTerminator_<%=cid%> +"' ");
}
if(rowTerminator_<%=cid%>!=null && !rowTerminator_<%=cid%>.isEmpty()){
copySQL_<%=cid%>.append(",ROWTERMINATOR = '"+ rowTerminator_<%=cid%> +"' ");
}
if(firstRow_<%=cid%>!=null && firstRow_<%=cid%> > 1){
copySQL_<%=cid%>.append(",FIRSTROW = '"+ firstRow_<%=cid%> +"' ");
}
<%
if(!"SESSION_DATEFORMAT".equals(copyCsvDateFormat)){
%>
copySQL_<%=cid%>.append(",DATEFORMAT = '"+ <%=copyCsvDateFormat%> +"' ");
<%
}
%>
copySQL_<%=cid%>.append(",ENCODING = '"+ <%=encoding%> +"' ");
<%
if(!"KEY".equals(authMethod)){
%>
if(errorFile_<%=cid%>!=null && !errorFile_<%=cid%>.isEmpty()){
copySQL_<%=cid%>.append(",ERRORFILE = '"+ errorFile_<%=cid%> +"' ");
}
<%
}
if(isCompress){
%>
copySQL_<%=cid%>.append(",COMPRESSION = '<%=compressionType%>' ");
<%
}
}
%>
if(maxErrors_<%=cid%>!=null && maxErrors_<%=cid%> > 0){
copySQL_<%=cid%>.append(",MAXERRORS = '"+ maxErrors_<%=cid%> +"' ");
}
copySQL_<%=cid%>.append(",IDENTITY_INSERT = '<%=identityInsert?"ON":"OFF" %>'");
String label_<%=cid%> = "COPY: ["+tableName_<%=cid%>+"] UniqueID: "+randomIdentifier_<%=cid%>;
copySQL_<%=cid%>.append(") OPTION (LABEL = '"+label_<%=cid%>+"')");
java.sql.Statement stmt_Copy<%=cid%> = conn_<%=cid%>.createStatement();
<%
if(isLog4jEnabled) {
%>
log.info("<%=cid%> - Starting COPY into table : [" + tableName_<%=cid%> + "].");
<%
}
%>
stmt_Copy<%=cid%>.executeUpdate(copySQL_<%=cid%>.toString());
stmt_Copy<%=cid%>.close();
java.sql.Statement monitor_<%=cid%> = conn_<%=cid%>.createStatement();
String monitorSql_<%=cid %>="SELECT r.command,sum(bytes_processed) AS bytes_processed,sum(rows_processed) AS rows_processed from sys.dm_pdw_exec_requests r JOIN sys.dm_pdw_dms_workers w ON r.[request_id] = w.request_id WHERE [label] = '"+label_<%=cid%>+"' and session_id = session_id() and type = 'WRITER' GROUP BY r.command ";
java.sql.ResultSet result_<%=cid %> = monitor_<%=cid%>.executeQuery(monitorSql_<%=cid %>);
int insertedCount_<%=cid%> = 0;
if(result_<%=cid %>!=null){
while(result_<%=cid %>.next()){
insertedCount_<%=cid%> = result_<%=cid %>.getInt(3);
<%
if(isLog4jEnabled) {
%>
log.info("<%=cid%> - Copy command : " + result_<%=cid %>.getString(1) );
log.info("<%=cid%> - Bytes processed : " + result_<%=cid %>.getLong(2) );
log.info("<%=cid%> - Row processed : " + insertedCount_<%=cid%> );
<%
}
%>
}
}
monitor_<%=cid%>.close();
globalMap.put("<%=cid%>_NB_LINE_INSERTED",insertedCount_<%=cid%>);
<%
if(isLog4jEnabled) {
%>
log.info("<%=cid%> - Copy into table : [" + tableName_<%=cid%> + "] completed successfully.");
<%
}
%>
} catch (java.sql.SQLException e_<%=cid%>) {
<%
if(isLog4jEnabled) {
%>
log.error("<%=cid%> - " + e_<%=cid%>.getMessage());
<%
}
%>
throw e_<%=cid%>;
}finally{
<%
if(!"CSV".equals(fileType)){
%>
if(extFileFormatCreated_<%=cid%>){
java.sql.Statement stmtDropExtFileFormat_<%=cid%> = conn_<%=cid%>.createStatement();
stmtDropExtFileFormat_<%=cid%>.execute("DROP EXTERNAL FILE FORMAT [" + azureExtFileFormat_<%=cid%> + "]");
stmtDropExtFileFormat_<%=cid%>.close();
<%
if(isLog4jEnabled) {
%>
log.info("<%=cid%> - Dropped External File Format : [" + azureExtFileFormat_<%=cid%> + "] successfully.");
<%
}
%>
}
<%
}
%>
}
<%
}
if(!useExistingConnection) {
%>

View File

@@ -6,8 +6,8 @@
</HEADER>
<FAMILIES>
<FAMILY>Databases/DB Specifics/Azure/SQL Data Warehouse</FAMILY>
<FAMILY>Cloud/Azure/SQL Data Warehouse</FAMILY>
<FAMILY>Databases/DB Specifics/Azure/Synapse Analytics</FAMILY>
<FAMILY>Cloud/Azure/Synapse Analytics</FAMILY>
</FAMILIES>
<DOCUMENTATION>
@@ -32,7 +32,7 @@
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER NAME="CONNECTION" FIELD="COMPONENT_LIST" REQUIRED="true" FILTER="tSQLDWHConnection" NUM_ROW="2" SHOW_IF="USE_EXISTING_CONNECTION == 'true'" DYNAMIC_SETTINGS="true" GROUP="DB_CONFIG" />
<PARAMETER NAME="CONNECTION" FIELD="COMPONENT_LIST" REQUIRED="true" FILTER="tAzureSynapseConnection" NUM_ROW="2" SHOW_IF="USE_EXISTING_CONNECTION == 'true'" DYNAMIC_SETTINGS="true" GROUP="DB_CONFIG" />
<PARAMETER NAME="DRIVER" FIELD="CLOSED_LIST" NUM_ROW="25" REPOSITORY_VALUE="DRIVER" SHOW_IF="USE_EXISTING_CONNECTION == 'false'" GROUP="DB_CONFIG">
<ITEMS DEFAULT="MSSQL_PROP">
@@ -92,42 +92,72 @@
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="LOAD_METHOD" FIELD="CLOSED_LIST" REQUIRED="true" NUM_ROW="90">
<ITEMS DEFAULT="COPY">
<ITEM NAME="POLYBASE" VALUE="POLYBASE" />
<ITEM NAME="COPY" VALUE="COPY"/>
</ITEMS>
</PARAMETER>
<PARAMETER NAME="AZURE_STORAGE" FIELD="CLOSED_LIST" REQUIRED="true" NUM_ROW="100" GROUP="AZURE_CONNECTION">
<ITEMS DEFAULT="BLOB">
<ITEM NAME="BLOB" VALUE="BLOB" />
<ITEM NAME="ADLS" VALUE="ADLS"/>
<ITEM NAME="ADLS" VALUE="ADLS" SHOW_IF="LOAD_METHOD == 'POLYBASE'"/>
<ITEM NAME="ADLS_GEN2" VALUE="ADLS_GEN2"/>
</ITEMS>
</PARAMETER>
<PARAMETER NAME="AUTH_METHOD" FIELD="CLOSED_LIST" REQUIRED_IF="LOAD_METHOD == 'COPY'" NUM_ROW="105" SHOW_IF="LOAD_METHOD == 'COPY'" GROUP="AZURE_CONNECTION">
<ITEMS DEFAULT="SAS">
<ITEM NAME="SAS" VALUE="SAS" />
<ITEM NAME="KEY" VALUE="KEY"/>
<ITEM NAME="AAD" VALUE="AAD" SHOW_IF="(isShow[ACTIVE_DIR_AUTH] AND (ACTIVE_DIR_AUTH == 'true')) OR ((USE_EXISTING_CONNECTION == 'true') AND (#LINK@NODE.CONNECTION.ACTIVE_DIR_AUTH != 'true'))"/>
</ITEMS>
</PARAMETER>
<PARAMETER NAME="ACCOUNT_NAME" FIELD="TEXT" NUM_ROW="110" REQUIRED="true" GROUP="AZURE_CONNECTION">
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="SECRET_KEY" FIELD="PASSWORD" NUM_ROW="110" REQUIRED="true" GROUP="AZURE_CONNECTION" SHOW_IF="AZURE_STORAGE == 'BLOB'">
<PARAMETER NAME="SECRET_KEY" FIELD="PASSWORD" NUM_ROW="110" REQUIRED="true" GROUP="AZURE_CONNECTION" SHOW_IF="(!isShow[AUTH_METHOD] AND ((AZURE_STORAGE == 'BLOB') OR (AZURE_STORAGE == 'ADLS_GEN2'))) OR (isShow[AUTH_METHOD] AND (AUTH_METHOD == 'KEY'))">
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="CONTAINER" FIELD="TEXT" NUM_ROW="120" GROUP="AZURE_CONNECTION" REQUIRED="true" SHOW_IF="AZURE_STORAGE == 'BLOB'">
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="PRINCIPAL_KEY" FIELD="PASSWORD" NUM_ROW="110" REQUIRED="true" GROUP="AZURE_CONNECTION" SHOW_IF="AZURE_STORAGE == 'ADLS'">
<PARAMETER NAME="SAS_TOKEN" FIELD="TEXT" NUM_ROW="110" REQUIRED="true" GROUP="AZURE_CONNECTION" SHOW_IF="(isShow[AUTH_METHOD] AND (AUTH_METHOD == 'SAS'))">
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="CLIENT_ID" FIELD="TEXT" NUM_ROW="130" GROUP="AZURE_CONNECTION" REQUIRED="true" SHOW_IF="AZURE_STORAGE == 'ADLS'">
<PARAMETER NAME="ENDPOINT_SUFFIX" FIELD="TEXT" NUM_ROW="115" GROUP="AZURE_CONNECTION" REQUIRED="true" SHOW_IF="LOAD_METHOD == 'COPY'">
<DEFAULT IF="(LOAD_METHOD == 'COPY') AND (AZURE_STORAGE == 'ADLS_GEN2')">"dfs.core.windows.net"</DEFAULT>
<DEFAULT IF="(LOAD_METHOD == 'COPY') AND (AZURE_STORAGE == 'BLOB')">"blob.core.windows.net"</DEFAULT>
</PARAMETER>
<PARAMETER NAME="CONTAINER" FIELD="TEXT" NUM_ROW="120" GROUP="AZURE_CONNECTION" REQUIRED="true" SHOW_IF="(AZURE_STORAGE == 'BLOB') OR (AZURE_STORAGE == 'ADLS_GEN2')">
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="ENDPOINT" FIELD="TEXT" NUM_ROW="135" GROUP="AZURE_CONNECTION" REQUIRED="true" SHOW_IF="AZURE_STORAGE == 'ADLS'">
<PARAMETER NAME="PRINCIPAL_KEY" FIELD="PASSWORD" NUM_ROW="110" REQUIRED="true" GROUP="AZURE_CONNECTION" SHOW_IF="(LOAD_METHOD == 'POLYBASE') AND (AZURE_STORAGE == 'ADLS')">
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="CLIENT_ID" FIELD="TEXT" NUM_ROW="130" GROUP="AZURE_CONNECTION" REQUIRED="true" SHOW_IF="(LOAD_METHOD == 'POLYBASE') AND (AZURE_STORAGE == 'ADLS')">
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="AZURE_LOCATION" FIELD="TEXT" NUM_ROW="140" GROUP="AZURE_CONNECTION" REQUIRED="true">
<PARAMETER NAME="ENDPOINT" FIELD="TEXT" NUM_ROW="135" GROUP="AZURE_CONNECTION" REQUIRED="true" SHOW_IF="(LOAD_METHOD == 'POLYBASE') AND (AZURE_STORAGE == 'ADLS')">
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="AZURE_LOCATION" FIELD="TEXT" NUM_ROW="140" SHOW_IF="LOAD_METHOD == 'POLYBASE'" GROUP="AZURE_CONNECTION" REQUIRED_IF="LOAD_METHOD == 'POLYBASE'">
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="EXTERNAL_LOCATIONS" FIELD="TABLE" NUM_ROW="145" REQUIRED="true" SHOW_IF="LOAD_METHOD == 'COPY'" GROUP="AZURE_CONNECTION" REQUIRED_IF="LOAD_METHOD == 'COPY'">
<ITEMS>
<ITEM NAME="EXTERNAL_LOCATION" VALUE=""/>
</ITEMS>
</PARAMETER>
<PARAMETER NAME="MAPPING" FIELD="MAPPING_TYPE" NUM_ROW="150" SHOW="false" >
<DEFAULT>id_MSSQL</DEFAULT>
</PARAMETER>
@@ -136,7 +166,16 @@
<ADVANCED_PARAMETERS>
<PARAMETER NAME="IMPORT_TYPE" FIELD="CLOSED_LIST" NUM_ROW="1" REQUIRED="true" GROUP="LOAD_DETAILS">
<PARAMETER NAME="ENABLE_SSL" FIELD="CHECK" NUM_ROW="1" GROUP="AZURE_CONNECTION" SHOW_IF="(LOAD_METHOD == 'POLYBASE') AND (AZURE_STORAGE == 'ADLS_GEN2')">
<DEFAULT>true</DEFAULT>
</PARAMETER>
<PARAMETER NAME="ACTIVE_DIR_AUTH" FIELD="CHECK" NUM_ROW="2" SHOW_IF="USE_EXISTING_CONNECTION=='false'">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<!-- POLYBASE -->
<PARAMETER NAME="IMPORT_TYPE" FIELD="CLOSED_LIST" NUM_ROW="3" REQUIRED="true" SHOW_IF="(LOAD_METHOD == 'POLYBASE')" GROUP="LOAD_DETAILS">
<ITEMS DEFAULT="DELIMITED_TEXT">
<ITEM NAME="DELIMITED_TEXT" VALUE="DELIMITED_TEXT" />
<ITEM NAME="HIVE_RCFILE" VALUE="HIVE_RCFILE" />
@@ -144,85 +183,152 @@
<ITEM NAME="PARQUET" VALUE="PARQUET" />
</ITEMS>
</PARAMETER>
<PARAMETER NAME="FIELDSEPARATOR" GROUP="LOAD_DETAILS" FIELD="TEXT" NUM_ROW="5" REPOSITORY_VALUE="FIELD_SEPARATOR" SHOW_IF="IMPORT_TYPE=='DELIMITED_TEXT'">
<PARAMETER NAME="FIELDSEPARATOR" GROUP="LOAD_DETAILS" FIELD="TEXT" NUM_ROW="5" REPOSITORY_VALUE="FIELD_SEPARATOR" SHOW_IF="(LOAD_METHOD == 'POLYBASE') AND (IMPORT_TYPE=='DELIMITED_TEXT')">
<DEFAULT>";"</DEFAULT>
</PARAMETER>
<PARAMETER NAME="USE_STRING_DELIMITER" FIELD="CHECK" NUM_ROW="10" GROUP="LOAD_DETAILS" SHOW_IF="IMPORT_TYPE=='DELIMITED_TEXT'">
<PARAMETER NAME="USE_STRING_DELIMITER" FIELD="CHECK" NUM_ROW="10" GROUP="LOAD_DETAILS" SHOW_IF="(LOAD_METHOD == 'POLYBASE') AND (IMPORT_TYPE=='DELIMITED_TEXT')">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER NAME="STRINGDELIMITER" GROUP="LOAD_DETAILS" FIELD="TEXT" NUM_ROW="10" REPOSITORY_VALUE="STRING_DELIMITER" SHOW_IF="(IMPORT_TYPE=='DELIMITED_TEXT' AND USE_STRING_DELIMITER == 'true')">
<PARAMETER NAME="STRINGDELIMITER" GROUP="LOAD_DETAILS" FIELD="TEXT" NUM_ROW="10" REPOSITORY_VALUE="STRING_DELIMITER" SHOW_IF="isShow[USE_STRING_DELIMITER] AND (USE_STRING_DELIMITER == 'true')">
<DEFAULT>"\""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="DATE_FORMAT" FIELD="CHECK" NUM_ROW="15" GROUP="LOAD_DETAILS" SHOW_IF="IMPORT_TYPE=='DELIMITED_TEXT'">
<PARAMETER NAME="DATE_FORMAT" FIELD="CHECK" NUM_ROW="15" GROUP="LOAD_DETAILS" SHOW_IF="(LOAD_METHOD == 'POLYBASE') AND (IMPORT_TYPE=='DELIMITED_TEXT')">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER NAME="DATE_PATTERN" GROUP="LOAD_DETAILS" FIELD="TEXT" NUM_ROW="15" SHOW_IF="(IMPORT_TYPE=='DELIMITED_TEXT' AND DATE_FORMAT == 'true')">
<PARAMETER NAME="DATE_PATTERN" GROUP="LOAD_DETAILS" FIELD="TEXT" NUM_ROW="15" SHOW_IF="isShow[(DATE_FORMAT] AND (DATE_FORMAT == 'true')">
<DEFAULT>"yyyy-MM-dd"</DEFAULT>
</PARAMETER>
<PARAMETER NAME="USE_TYPE_DEFAULT" FIELD="CHECK" NUM_ROW="20" GROUP="LOAD_DETAILS" SHOW_IF="IMPORT_TYPE=='DELIMITED_TEXT'">
<PARAMETER NAME="USE_TYPE_DEFAULT" FIELD="CHECK" NUM_ROW="20" GROUP="LOAD_DETAILS" SHOW_IF="(LOAD_METHOD == 'POLYBASE') AND (IMPORT_TYPE=='DELIMITED_TEXT')">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<!-- COPY -->
<PARAMETER NAME="FILE_TYPE" FIELD="CLOSED_LIST" NUM_ROW="3" REQUIRED="true" SHOW_IF="(LOAD_METHOD == 'COPY')" GROUP="LOAD_DETAILS">
<ITEMS DEFAULT="CSV">
<ITEM NAME="CSV" VALUE="CSV" />
<ITEM NAME="ORC" VALUE="ORC" />
<ITEM NAME="PARQUET" VALUE="PARQUET" />
</ITEMS>
</PARAMETER>
<PARAMETER NAME="SPECIFY_FIELDS_MAPPING" FIELD="CHECK" NUM_ROW="4" SHOW_IF="(LOAD_METHOD == 'COPY')" GROUP="LOAD_DETAILS">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER NAME="COLUMN_MAP_FIELD" FIELD="TABLE" NUM_ROW="5" REQUIRED="false" SHOW_IF="(LOAD_METHOD == 'COPY') AND (SPECIFY_FIELDS_MAPPING == 'true')" GROUP="LOAD_DETAILS">>
<ITEMS BASED_ON_SCHEMA="true">
<ITEM NAME="FIELD_INDEX" VALUE=""/>
</ITEMS>
</PARAMETER>
<PARAMETER NAME="FIRST_ROW" GROUP="LOAD_DETAILS" FIELD="TEXT" NUM_ROW="6" SHOW_IF="(LOAD_METHOD == 'COPY') AND (FILE_TYPE=='CSV')">
<DEFAULT>1</DEFAULT>
</PARAMETER>
<PARAMETER NAME="FIELD_QUOTE" GROUP="LOAD_DETAILS" FIELD="TEXT" NUM_ROW="7" SHOW_IF="(LOAD_METHOD == 'COPY') AND (FILE_TYPE=='CSV')">
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="FIELD_TERMINATOR" GROUP="LOAD_DETAILS" FIELD="TEXT" NUM_ROW="8" SHOW_IF="(LOAD_METHOD == 'COPY') AND (FILE_TYPE=='CSV')">
<DEFAULT>","</DEFAULT>
</PARAMETER>
<PARAMETER NAME="ROW_TERMINATOR" GROUP="LOAD_DETAILS" FIELD="TEXT" NUM_ROW="10" SHOW_IF="(LOAD_METHOD == 'COPY') AND (FILE_TYPE=='CSV')">
<DEFAULT>"\n"</DEFAULT>
</PARAMETER>
<PARAMETER NAME="COPY_CSV_DATE_FORMAT" GROUP="LOAD_DETAILS" FIELD="CLOSED_LIST" NUM_ROW="12" SHOW_IF="(LOAD_METHOD == 'COPY') AND (FILE_TYPE=='CSV')">
<ITEMS DEFAULT="SESSION_DATEFORMAT">
<ITEM NAME="SESSION_DATEFORMAT" VALUE="SESSION_DATEFORMAT" />
<ITEM NAME="MDY" VALUE="&quot;mdy&quot;" />
<ITEM NAME="DMY" VALUE="&quot;dmy&quot;" />
<ITEM NAME="YMD" VALUE="&quot;ymd&quot;" />
<ITEM NAME="YDM" VALUE="&quot;ydm&quot;" />
<ITEM NAME="MYD" VALUE="&quot;myd&quot;" />
<ITEM NAME="DYM" VALUE="&quot;dym&quot;" />
</ITEMS>
</PARAMETER>
<PARAMETER NAME="ENCODING" GROUP="LOAD_DETAILS" FIELD="CLOSED_LIST" NUM_ROW="14" SHOW_IF="(LOAD_METHOD == 'COPY') AND (FILE_TYPE=='CSV')">
<ITEMS DEFAULT="UTF8">
<ITEM NAME="UTF8" VALUE="&quot;UTF8&quot;" />
<ITEM NAME="UTF16" VALUE="&quot;UTF16&quot;" />
</ITEMS>
</PARAMETER>
<PARAMETER NAME="IDENTITY_INSERT" GROUP="LOAD_DETAILS" FIELD="CHECK" NUM_ROW="16" SHOW_IF="(LOAD_METHOD == 'COPY')">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER NAME="MAX_ERRORS" GROUP="LOAD_DETAILS" FIELD="TEXT" NUM_ROW="18" SHOW_IF="(LOAD_METHOD == 'COPY')">
<DEFAULT>0</DEFAULT>
</PARAMETER>
<PARAMETER NAME="ERROR_FILE" GROUP="LOAD_DETAILS" FIELD="TEXT" NUM_ROW="20" SHOW_IF="(LOAD_METHOD == 'COPY') AND (AUTH_METHOD != 'KEY') AND (FILE_TYPE=='CSV')">
<DEFAULT>""</DEFAULT>
</PARAMETER>
<!-- COPY end -->
<PARAMETER NAME="COMPRESS" FIELD="CHECK" NUM_ROW="25" REQUIRED="true" GROUP="LOAD_DETAILS">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER NAME="COMPRESSION_TEXT" FIELD="CLOSED_LIST" NUM_ROW="25" GROUP="LOAD_DETAILS" SHOW_IF="COMPRESS=='true' AND (IMPORT_TYPE == 'DELIMITED_TEXT')">
<PARAMETER NAME="COMPRESSION_TEXT" FIELD="CLOSED_LIST" NUM_ROW="25" GROUP="LOAD_DETAILS" SHOW_IF="(COMPRESS=='true') AND (((LOAD_METHOD == 'POLYBASE') AND (IMPORT_TYPE == 'DELIMITED_TEXT')) OR ((LOAD_METHOD == 'COPY') AND (FILE_TYPE == 'CSV')))">
<ITEMS DEFAULT="DEFAULT">
<ITEM NAME="DEFAULT" VALUE="org.apache.hadoop.io.compress.DefaultCodec"/>
<ITEM NAME="DEFAULT" VALUE="org.apache.hadoop.io.compress.DefaultCodec" SHOW_IF="LOAD_METHOD == 'POLYBASE'"/>
<ITEM NAME="GZIP" VALUE="org.apache.hadoop.io.compress.GzipCodec"/>
</ITEMS>
</PARAMETER>
<PARAMETER NAME="COMPRESSION_RC" FIELD="CLOSED_LIST" NUM_ROW="25" GROUP="LOAD_DETAILS" SHOW_IF="COMPRESS=='true' AND (IMPORT_TYPE == 'HIVE_RCFILE')">
<PARAMETER NAME="COMPRESSION_RC" FIELD="CLOSED_LIST" NUM_ROW="25" GROUP="LOAD_DETAILS" SHOW_IF="(LOAD_METHOD == 'POLYBASE') AND (COMPRESS=='true') AND (IMPORT_TYPE == 'HIVE_RCFILE')">
<ITEMS DEFAULT="DEFAULT">
<ITEM NAME="DEFAULT" VALUE="org.apache.hadoop.io.compress.DefaultCodec"/>
</ITEMS>
</PARAMETER>
<PARAMETER NAME="SERDE_METHOD" FIELD="CLOSED_LIST" NUM_ROW="23" GROUP="LOAD_DETAILS" SHOW_IF="IMPORT_TYPE == 'HIVE_RCFILE'">
<PARAMETER NAME="SERDE_METHOD" FIELD="CLOSED_LIST" NUM_ROW="23" GROUP="LOAD_DETAILS" SHOW_IF="(LOAD_METHOD == 'POLYBASE') AND (IMPORT_TYPE == 'HIVE_RCFILE')">
<ITEMS DEFAULT="LAZY">
<ITEM NAME="LAZY" VALUE="org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe"/>
<ITEM NAME="COLUMNAR" VALUE="org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe"/>
</ITEMS>
</PARAMETER>
<PARAMETER NAME="COMPRESSION_ORC" FIELD="CLOSED_LIST" NUM_ROW="25" GROUP="LOAD_DETAILS" SHOW_IF="COMPRESS=='true' AND (IMPORT_TYPE == 'HIVE_ORC')">
<PARAMETER NAME="COMPRESSION_ORC" FIELD="CLOSED_LIST" NUM_ROW="25" GROUP="LOAD_DETAILS" SHOW_IF="(COMPRESS=='true') AND (((LOAD_METHOD == 'POLYBASE') AND (IMPORT_TYPE == 'HIVE_ORC')) OR ((LOAD_METHOD == 'COPY') AND (FILE_TYPE == 'ORC')))">>
<ITEMS DEFAULT="DEFAULT">
<ITEM NAME="DEFAULT" VALUE="org.apache.hadoop.io.compress.DefaultCodec"/>
<ITEM NAME="SNAPPY" VALUE="org.apache.hadoop.io.compress.SnappyCodec"/>
</ITEMS>
</PARAMETER>
<PARAMETER NAME="COMPRESSION_PARQUET" FIELD="CLOSED_LIST" NUM_ROW="25" GROUP="LOAD_DETAILS" SHOW_IF="COMPRESS=='true' AND (IMPORT_TYPE == 'PARQUET')">
<PARAMETER NAME="COMPRESSION_PARQUET" FIELD="CLOSED_LIST" NUM_ROW="25" GROUP="LOAD_DETAILS" SHOW_IF="(COMPRESS=='true') AND (((LOAD_METHOD == 'POLYBASE') AND (IMPORT_TYPE == 'PARQUET')) OR ((LOAD_METHOD == 'COPY') AND (FILE_TYPE == 'PARQUET')))">>
<ITEMS DEFAULT="GZIP">
<ITEM NAME="GZIP" VALUE="org.apache.hadoop.io.compress.GzipCodec"/>
<ITEM NAME="SNAPPY" VALUE="org.apache.hadoop.io.compress.SnappyCodec"/>
</ITEMS>
</PARAMETER>
<PARAMETER NAME="EXT_TABLE_OPTIONS" FIELD="CHECK" NUM_ROW="30" REPOSITORY_VALUE="EXT_TABLE_OPTIONS">
<PARAMETER NAME="EXT_TABLE_OPTIONS" FIELD="CHECK" NUM_ROW="30" REPOSITORY_VALUE="EXT_TABLE_OPTIONS" SHOW_IF="(LOAD_METHOD == 'POLYBASE')">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER NAME="REJECT_TYPE" FIELD="CLOSED_LIST" NUM_ROW="35" REQUIRED="true" SHOW_IF="(EXT_TABLE_OPTIONS == 'true')">
<PARAMETER NAME="REJECT_TYPE" FIELD="CLOSED_LIST" NUM_ROW="35" REQUIRED="true" SHOW_IF="(LOAD_METHOD == 'POLYBASE') AND (EXT_TABLE_OPTIONS == 'true')">
<ITEMS DEFAULT="Value">
<ITEM NAME="Value" VALUE="Value" />
<ITEM NAME="Percentage" VALUE="Percentage"/>
</ITEMS>
</PARAMETER>
<PARAMETER NAME="REJECT_VALUE" FIELD="TEXT" NUM_ROW="35" REQUIRED="true" SHOW_IF="(EXT_TABLE_OPTIONS == 'true')">
<PARAMETER NAME="REJECT_VALUE" FIELD="TEXT" NUM_ROW="35" REQUIRED="true" SHOW_IF="(LOAD_METHOD == 'POLYBASE') AND (EXT_TABLE_OPTIONS == 'true')">
<DEFAULT>0</DEFAULT>
</PARAMETER>
<PARAMETER NAME="REJECT_SAMPLE_VALUE" FIELD="TEXT" NUM_ROW="35" REQUIRED="true" SHOW_IF="(EXT_TABLE_OPTIONS == 'true') AND (REJECT_TYPE == 'Percentage')">
<PARAMETER NAME="REJECT_SAMPLE_VALUE" FIELD="TEXT" NUM_ROW="35" REQUIRED="true" SHOW_IF="(LOAD_METHOD == 'POLYBASE') AND (EXT_TABLE_OPTIONS == 'true') AND (REJECT_TYPE == 'Percentage')">
<DEFAULT>0</DEFAULT>
</PARAMETER>
@@ -238,7 +344,7 @@
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="TABLE_OPTION" FIELD="CLOSED_LIST" NUM_ROW="45" GROUP="DW_TABLE_PROPERTIES" REQUIRED="true" SHOW_IF="(TABLE_ACTION == 'DROP_CREATE') OR (TABLE_ACTION == 'DROP_IF_EXISTS_AND_CREATE') OR (TABLE_ACTION == 'CREATE') OR (TABLE_ACTION == 'CREATE_IF_NOT_EXISTS')">
<PARAMETER NAME="TABLE_OPTION" FIELD="CLOSED_LIST" NUM_ROW="45" GROUP="DW_TABLE_PROPERTIES" REQUIRED="true" SHOW_IF="(TABLE_ACTION == 'DROP_CREATE') OR (TABLE_ACTION == 'DROP_IF_EXISTS_AND_CREATE') OR (TABLE_ACTION == 'CREATE') OR (TABLE_ACTION == 'CREATE_IF_NOT_EXISTS'))">
<ITEMS DEFAULT="CLUSTERED_COLUMNSTORE_INDEX">
<ITEM NAME="CLUSTERED_COLUMNSTORE_INDEX" VALUE="CLUSTERED_COLUMNSTORE_INDEX" />
<ITEM NAME="HEAP" VALUE="HEAP"/>
@@ -250,7 +356,7 @@
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="PARTITION" FIELD="CHECK" NUM_ROW="47" GROUP="DW_TABLE_PROPERTIES" REPOSITORY_VALUE="PARTITION" SHOW_IF="(TABLE_ACTION == 'DROP_CREATE') OR (TABLE_ACTION == 'DROP_IF_EXISTS_AND_CREATE') OR (TABLE_ACTION == 'CREATE') OR (TABLE_ACTION == 'CREATE_IF_NOT_EXISTS')">
<PARAMETER NAME="PARTITION" FIELD="CHECK" NUM_ROW="47" GROUP="DW_TABLE_PROPERTIES" REPOSITORY_VALUE="PARTITION" SHOW_IF="(TABLE_ACTION == 'DROP_CREATE') OR (TABLE_ACTION == 'DROP_IF_EXISTS_AND_CREATE') OR (TABLE_ACTION == 'CREATE') OR (TABLE_ACTION == 'CREATE_IF_NOT_EXISTS'))">
<DEFAULT>false</DEFAULT>
</PARAMETER>
@@ -275,6 +381,14 @@
<CODEGENERATION>
<IMPORTS>
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="DRIVER=='MSSQL_PROP'" />
<IMPORT NAME="adal4j" MODULE="adal4j-1.6.5.jar" MVN="mvn:com.microsoft.azure/adal4j/1.6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-lang3" MODULE="commons-lang3-3.10.jar" MVN="mvn:org.apache.commons/commons-lang3/3.10" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-codec" MODULE="commons-codec-1.14.jar" MVN="mvn:commons-codec/commons-codec/1.14" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="gson" MODULE="gson-2.8.6.jar" MVN="mvn:com.google.code.gson/gson/2.8.6" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="oauth2-oidc-sdk" MODULE="oauth2-oidc-sdk-6.5.jar" MVN="mvn:com.nimbusds/oauth2-oidc-sdk/6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="json-smart" MODULE="json-smart-2.3.jar" MVN="mvn:net.minidev/json-smart/2.3" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="nimbus-jose-jwt" MODULE="nimbus-jose-jwt-8.11.jar" MVN="mvn:com.nimbusds/nimbus-jose-jwt/8.11" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="javax.mail" MODULE="javax.mail-1.6.2.jar" MVN="mvn:com.sun.mail/javax.mail/1.6.2" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
</IMPORTS>
</CODEGENERATION>

View File

@@ -1,7 +1,8 @@
ACCOUNT_NAME.NAME=Account Name
AZURE_CONNECTION.NAME=Azure Storage Connection
AZURE_LOCATION.NAME=Azure Storage Location
AZURE_STORAGE.ITEM.ADLS=Data Lake Store
AZURE_STORAGE.ITEM.ADLS=Data Lake Storage Gen1
AZURE_STORAGE.ITEM.ADLS_GEN2=Data Lake Storage Gen2
AZURE_STORAGE.ITEM.BLOB=Blob Storage
AZURE_STORAGE.NAME=Azure Storage
CLIENT_ID.NAME=Client Id
@@ -35,12 +36,13 @@ DISTRIBUTION.NAME=Distribution Option
DISTRIBUTION_COLUMN_NAME.NAME=Distribution Column Name
DRIVER.NAME=JDBC Provider
DRIVER.ITEM.MSSQL_PROP=Microsoft
DW_TABLE_PROPERTIES.NAME=Data Warehouse Table Properties
DW_TABLE_PROPERTIES.NAME=Synapse Analytics table properties
ENABLE_SSL.NAME=Secure transfer required
ENDPOINT.NAME=OAuth 2.0 token endpoint
EXT_TABLE_OPTIONS.NAME=Data import reject options
FIELDSEPARATOR.NAME=Field separator
FILENAME.NAME=Filepath at local
HELP=org.talend.help.tSQLDWHBulkExec
HELP=org.talend.help.tAzureSynapseBulkExec
HOST.NAME=Host
IMPORT_TYPE.ITEM.DELIMITED_TEXT=Delimited Text
IMPORT_TYPE.ITEM.HIVE_ORC=Hive ORC
@@ -49,7 +51,7 @@ IMPORT_TYPE.ITEM.PARQUET=Parquet
IMPORT_TYPE.NAME=File format
INDEX_COLUMNS.NAME=Index column(s)
LOAD_DETAILS.NAME=Load Parameters
LONG_NAME=Load data into Azure Data Warehouse with PolyBase
LONG_NAME=Load data into Azure Synapse Analytics with PolyBase
MAPPING.NAME=Mapping
NB_LINE_INSERTED.NAME=Number of lines inserted
PARTITION.NAME=Partition
@@ -100,4 +102,45 @@ USE_EXISTING_CONNECTION.NAME=Use an existing connection
USE_STRING_DELIMITER.NAME=Enclosed by
USE_TYPE_DEFAULT.ITEM.FALSE=False
USE_TYPE_DEFAULT.ITEM.TRUE=True
USE_TYPE_DEFAULT.NAME=Use type default
USE_TYPE_DEFAULT.NAME=Use type default
ACTIVE_DIR_AUTH.NAME=Authenticate using Azure Active Directory
LOAD_METHOD.NAME=Load method
LOAD_METHOD.ITEM.POLYBASE=PolyBase
LOAD_METHOD.ITEM.COPY=Copy
AUTH_METHOD.NAME=Authentication method
AUTH_METHOD.ITEM.SAS=Shared Access Signatures
AUTH_METHOD.ITEM.KEY=Storage account key
AUTH_METHOD.ITEM.AAD=Azure Active Directory
SAS_TOKEN.NAME=SAS token
ENDPOINT_SUFFIX.NAME=Endpoint suffix
EXTERNAL_LOCATIONS.NAME=External paths
EXTERNAL_LOCATIONS.ITEM.EXTERNAL_LOCATION=Path
SPECIFY_FIELDS_MAPPING.NAME=Specify map to source data fields
COLUMN_MAP_FIELD.NAME=
COLUMN_MAP_FIELD.ITEM.FIELD_INDEX=Source field index
FILE_TYPE.NAME=File type
FILE_TYPE.ITEM.CSV=CSV
FILE_TYPE.ITEM.ORC=ORC
FILE_TYPE.ITEM.PARQUET=PARQUET
FIRST_ROW.NAME=First row
FIELD_QUOTE.NAME=Field quote
FIELD_TERMINATOR.NAME=Field terminator
ROW_TERMINATOR.NAME=Row terminator
COPY_CSV_DATE_FORMAT.NAME=Date format
COPY_CSV_DATE_FORMAT.ITEM.SESSION_DATEFORMAT=Session date format
COPY_CSV_DATE_FORMAT.ITEM.MDY=mdy
COPY_CSV_DATE_FORMAT.ITEM.DMY=dmy
COPY_CSV_DATE_FORMAT.ITEM.YMD=ymd
COPY_CSV_DATE_FORMAT.ITEM.YDM=ydm
COPY_CSV_DATE_FORMAT.ITEM.MYD=myd
COPY_CSV_DATE_FORMAT.ITEM.DYM=dym
ENCODING.NAME=Encoding
ENCODING.ITEM.UTF8=UTF8
ENCODING.ITEM.UTF16=UTF16
IDENTITY_INSERT.NAME=Identity insert
MAX_ERRORS.NAME=Max errors
ERROR_FILE.NAME=Error file location

View File

@@ -15,8 +15,8 @@
</HEADER>
<FAMILIES>
<FAMILY>Databases/DB Specifics/Azure/SQL Data Warehouse</FAMILY>
<FAMILY>Cloud/Azure/SQL Data Warehouse</FAMILY>
<FAMILY>Databases/DB Specifics/Azure/Synapse Analytics</FAMILY>
<FAMILY>Cloud/Azure/Synapse Analytics</FAMILY>
</FAMILIES>
<DOCUMENTATION>
@@ -37,7 +37,7 @@
<PARAMETER
NAME="CONNECTION"
FIELD="COMPONENT_LIST"
REQUIRED="true" FILTER="tSQLDWHConnection"
REQUIRED="true" FILTER="tAzureSynapseConnection"
NUM_ROW="10"
DYNAMIC_SETTINGS="true"
/>

View File

@@ -1,3 +1,3 @@
HELP=org.talend.help.tSQLDWHClose
HELP=org.talend.help.tAzureSynapseClose
LONG_NAME=Close a selected MSSql connection.
CONNECTION.NAME=Component List

View File

@@ -16,8 +16,8 @@
</HEADER>
<FAMILIES>
<FAMILY>Databases/DB Specifics/Azure/SQL Data Warehouse</FAMILY>
<FAMILY>Cloud/Azure/SQL Data Warehouse</FAMILY>
<FAMILY>Databases/DB Specifics/Azure/Synapse Analytics</FAMILY>
<FAMILY>Cloud/Azure/Synapse Analytics</FAMILY>
</FAMILIES>
<DOCUMENTATION>
@@ -38,7 +38,7 @@
<PARAMETER
NAME="CONNECTION"
FIELD="COMPONENT_LIST"
REQUIRED="true" FILTER="tSQLDWHConnection"
REQUIRED="true" FILTER="tAzureSynapseConnection"
NUM_ROW="10"
DYNAMIC_SETTINGS="true"
/>

View File

@@ -1,6 +1,6 @@
#Created by JInto - www.guh-software.de
#Wed May 23 11:26:21 CST 2007
HELP=org.talend.help.tSQLDWHCommit
HELP=org.talend.help.tAzureSynapseCommit
LONG_NAME=Commits all transactions not already commited in a selected MSSql connection
CLOSE.NAME=Close Connection
CONNECTION.NAME=Component List

View File

@@ -0,0 +1,78 @@
<%@ jet
imports="
org.talend.core.model.process.INode
org.talend.core.model.process.ElementParameterParser
org.talend.designer.codegen.config.CodeGeneratorArgument
"
%>
<%@ include file="../templates/DB/HelpClass/HelpClass.javajet"%>
<%
class ConnectionUtil extends DefaultConnectionUtil{
public void createURL(INode node) {
super.createURL(node);
String driver = ElementParameterParser.getValue(node, "__DRIVER__");
boolean useActiveDirectoryAuth = "true".equals(ElementParameterParser.getValue(node, "__ACTIVE_DIR_AUTH__"));
%>
<%
if(driver.equals("JTDS")) {
%>
String url_<%=cid %> = "jdbc:jtds:sqlserver://" + <%=dbhost%> ;
<%
} else {
%>
String url_<%=cid %> = "jdbc:sqlserver://" + <%=dbhost%> ;
<%
}
%>
String port_<%=cid%> = <%=dbport%>;
String dbname_<%=cid%> = <%=dbname%> ;
if (!"".equals(port_<%=cid%>)) {
url_<%=cid %> += ":" + <%=dbport%>;
}
if (!"".equals(dbname_<%=cid%>)) {
<%
if(driver.equals("JTDS")) {
%>
url_<%=cid%> += "//" + <%=dbname%>;
<%
} else {
%>
url_<%=cid%> += ";databaseName=" + <%=dbname%>;
<%
}
%>
}
url_<%=cid%> += ";applicationName=Talend;" + <%=dbproperties%>;
<%
if (useActiveDirectoryAuth) {
%>
url_<%=cid%> += ";encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;Authentication=ActiveDirectoryPassword";
url_<%=cid%> += ";database=" + <%=dbname%>;
<%
}
}
public String getDirverClassName(INode node){
String driver = ElementParameterParser.getValue(node, "__DRIVER__");
if(driver.equals("JTDS")) {
return "net.sourceforge.jtds.jdbc.Driver";
}
return "com.microsoft.sqlserver.jdbc.SQLServerDriver";
}
}//end class
connUtil = new ConnectionUtil();
%>
<%//----------------------------component codes-----------------------------------------%>
<%@ include file="../templates/DB/AbstractDBConnection.javajet"%>
globalMap.put("dbschema_<%=cid%>", <%=dbschema%>);
globalMap.put("db_<%=cid%>", <%=dbname%>);
globalMap.put("conn_<%=cid%>",conn_<%=cid%>);
globalMap.put("shareIdentitySetting_<%=cid%>", <%=ElementParameterParser.getValue(node, "__SHARE_IDENTITY_SETTING__")%>);

View File

@@ -16,8 +16,8 @@
</HEADER>
<FAMILIES>
<FAMILY>Databases/DB Specifics/Azure/SQL Data Warehouse</FAMILY>
<FAMILY>Cloud/Azure/SQL Data Warehouse</FAMILY>
<FAMILY>Databases/DB Specifics/Azure/Synapse Analytics</FAMILY>
<FAMILY>Cloud/Azure/Synapse Analytics</FAMILY>
</FAMILIES>
<DOCUMENTATION>
@@ -188,6 +188,9 @@
</PARAMETERS>
<ADVANCED_PARAMETERS>
<PARAMETER NAME="ACTIVE_DIR_AUTH" FIELD="CHECK" NUM_ROW="6">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER NAME="AUTO_COMMIT" FIELD="CHECK" NUM_ROW="10">
<DEFAULT>false</DEFAULT>
</PARAMETER>
@@ -201,6 +204,14 @@
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="DRIVER=='MSSQL_PROP'" />
<IMPORT NAME="slf4j-api-1.7.25.jar" MODULE="slf4j-api-1.7.25.jar" MVN="mvn:org.slf4j/slf4j-api/1.7.25" REQUIRED_IF="(USE_SHARED_CONNECTION == 'true' AND SPECIFY_DATASOURCE_ALIAS=='false')" />
<IMPORT NAME="slf4j-log4j12-1.7.25.jar" MODULE="slf4j-log4j12-1.7.25.jar" MVN="mvn:org.slf4j/slf4j-log4j12/1.7.25" REQUIRED_IF="(USE_SHARED_CONNECTION == 'true' AND SPECIFY_DATASOURCE_ALIAS=='false')" />
<IMPORT NAME="adal4j" MODULE="adal4j-1.6.5.jar" MVN="mvn:com.microsoft.azure/adal4j/1.6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true')" />
<IMPORT NAME="commons-lang3" MODULE="commons-lang3-3.10.jar" MVN="mvn:org.apache.commons/commons-lang3/3.10" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true')" />
<IMPORT NAME="commons-codec" MODULE="commons-codec-1.14.jar" MVN="mvn:commons-codec/commons-codec/1.14" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true')" />
<IMPORT NAME="gson" MODULE="gson-2.8.6.jar" MVN="mvn:com.google.code.gson/gson/2.8.6" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true')" />
<IMPORT NAME="oauth2-oidc-sdk" MODULE="oauth2-oidc-sdk-6.5.jar" MVN="mvn:com.nimbusds/oauth2-oidc-sdk/6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true')" />
<IMPORT NAME="json-smart" MODULE="json-smart-2.3.jar" MVN="mvn:net.minidev/json-smart/2.3" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true')" />
<IMPORT NAME="nimbus-jose-jwt" MODULE="nimbus-jose-jwt-8.11.jar" MVN="mvn:com.nimbusds/nimbus-jose-jwt/8.11" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true')" />
<IMPORT NAME="javax.mail" MODULE="javax.mail-1.6.2.jar" MVN="mvn:com.sun.mail/javax.mail/1.6.2" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true')" />
</IMPORTS>
</CODEGENERATION>

View File

@@ -2,7 +2,7 @@
#Wed Feb 07 18:38:14 CST 2007
DBNAME.NAME=Database
ENCODING.NAME=Encoding
HELP=org.talend.help.tSQLDWHConnection
HELP=org.talend.help.tAzureSynapseConnection
HOST.NAME=Host
LONG_NAME=Creates a connection to an MSSql database
NB_LINE.NAME=Number of line
@@ -27,4 +27,6 @@ DATASOURCE_ALIAS.NAME=Data source alias
DRIVER.NAME=JDBC Provider
DRIVER.ITEM.JTDS=Open source JTDS
DRIVER.ITEM.MSSQL_PROP=Microsoft
DRIVER.ITEM.MSSQL_PROP=Microsoft
ACTIVE_DIR_AUTH.NAME=Authenticate using Azure Active Directory

View File

@@ -13,15 +13,18 @@ imports="
"
%>
<%@ include file="../templates/DB/Input/HelpClass.javajet"%>
<%
class DBInputBeginUtil extends DefaultDBInputUtil{
private String driver;
private boolean useActiveDirectoryAuth = false;
public void beforeComponentProcess(INode node){
super.beforeComponentProcess(node);
cid = node.getUniqueName();
useActiveDirectoryAuth = "true".equals(ElementParameterParser.getValue(node, "__ACTIVE_DIR_AUTH__"));
%>
org.talend.designer.components.util.mssql.MSSqlGenerateTimestampUtil mssqlGTU_<%=cid%> = org.talend.designer.components.util.mssql.MSSqlUtilFactory.getMSSqlGenerateTimestampUtil();
@@ -84,6 +87,14 @@ imports="
}
%>
}
<%
if (useActiveDirectoryAuth) {
%>
url_<%=cid%> += ";encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;Authentication=ActiveDirectoryPassword";
url_<%=cid%> += ";database=" + <%=dbname%>;
<%
}
%>
url_<%=cid%> += ";applicationName=Talend;" + <%=dbproperties%>;
String dbschema_<%=cid%> = <%=dbschema%>;
<%

View File

@@ -16,8 +16,8 @@
</HEADER>
<FAMILIES>
<FAMILY>Databases/DB Specifics/Azure/SQL Data Warehouse</FAMILY>
<FAMILY>Cloud/Azure/SQL Data Warehouse</FAMILY>
<FAMILY>Databases/DB Specifics/Azure/Synapse Analytics</FAMILY>
<FAMILY>Cloud/Azure/Synapse Analytics</FAMILY>
</FAMILIES>
<DOCUMENTATION>
@@ -47,7 +47,7 @@
<PARAMETER
NAME="CONNECTION"
FIELD="COMPONENT_LIST"
REQUIRED="true" FILTER="tSQLDWHConnection"
REQUIRED="true" FILTER="tAzureSynapseConnection"
NUM_ROW="1"
SHOW_IF="USE_EXISTING_CONNECTION == 'true'"
DYNAMIC_SETTINGS="true"
@@ -233,6 +233,10 @@
<DEFAULT>"noDatetimeStringSync=true"</DEFAULT>
</PARAMETER>
<PARAMETER NAME="ACTIVE_DIR_AUTH" FIELD="CHECK" NUM_ROW="6" SHOW_IF="USE_EXISTING_CONNECTION=='false'">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER
NAME="ENCODING"
FIELD="ENCODING_TYPE"
@@ -258,8 +262,16 @@
<CODEGENERATION>
<IMPORTS>
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="(DRIVER == 'MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Talend_MssqlUtil" MODULE="talend_DB_mssqlUtil-1.4.jar" MVN="mvn:org.talend.components.lib/talend_DB_mssqlUtil/1.4" UrlPath="platform:/plugin/org.talend.libraries.custom/lib/talend_DB_mssqlUtil-1.4.jar" REQUIRED="true" />
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="(DRIVER == 'MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Talend_MssqlUtil" MODULE="talend_DB_mssqlUtil-1.4.jar" MVN="mvn:org.talend.components.lib/talend_DB_mssqlUtil/1.4" UrlPath="platform:/plugin/org.talend.libraries.custom/lib/talend_DB_mssqlUtil-1.4.jar" REQUIRED="true" />
<IMPORT NAME="adal4j" MODULE="adal4j-1.6.5.jar" MVN="mvn:com.microsoft.azure/adal4j/1.6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-lang3" MODULE="commons-lang3-3.10.jar" MVN="mvn:org.apache.commons/commons-lang3/3.10" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-codec" MODULE="commons-codec-1.14.jar" MVN="mvn:commons-codec/commons-codec/1.14" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="gson" MODULE="gson-2.8.6.jar" MVN="mvn:com.google.code.gson/gson/2.8.6" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="oauth2-oidc-sdk" MODULE="oauth2-oidc-sdk-6.5.jar" MVN="mvn:com.nimbusds/oauth2-oidc-sdk/6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="json-smart" MODULE="json-smart-2.3.jar" MVN="mvn:net.minidev/json-smart/2.3" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="nimbus-jose-jwt" MODULE="nimbus-jose-jwt-8.11.jar" MVN="mvn:com.nimbusds/nimbus-jose-jwt/8.11" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="javax.mail" MODULE="javax.mail-1.6.2.jar" MVN="mvn:com.sun.mail/javax.mail/1.6.2" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
</IMPORTS>
</CODEGENERATION>

View File

@@ -7,7 +7,7 @@ DBD-mysql.INFO=Required for MySQL
DBNAME.NAME=Database
DSN.NAME=Datasource
ENCODING.NAME=Encoding
HELP=org.talend.help.tSQLDWHInput
HELP=org.talend.help.tAzureSynapseInput
HOST.NAME=Host
LONG_NAME=Reads an MSSql table and extracts fields based on an SQL query
NB_LINE.NAME=Number of line
@@ -47,6 +47,8 @@ SPECIFY_DATASOURCE_ALIAS.NAME=Specify a data source alias
DATASOURCE.NAME=Data source
DATASOURCE_ALIAS.NAME=Data source alias
ACTIVE_DIR_AUTH.NAME=Authenticate using Azure Active Directory
DRIVER.NAME=JDBC Provider
DRIVER.ITEM.JTDS=Open source JTDS
DRIVER.ITEM.MSSQL_PROP=Microsoft

View File

@@ -65,6 +65,8 @@ skeleton="../templates/db_output_bulk.skeleton"
String commitEvery = ElementParameterParser.getValue(node, "__COMMIT_EVERY__");
boolean identityInsert= "true".equals(ElementParameterParser.getValue(node, "__IDENTITY_INSERT__"));
boolean useActiveDirectoryAuth = "true".equals(ElementParameterParser.getValue(node, "__ACTIVE_DIR_AUTH__"));
boolean isEnableDebug = ("true").equals(ElementParameterParser.getValue(node,"__ENABLE_DEBUG_MODE__"));
boolean usingStatsLogs=cid.equals("talendLogs_DB") || cid.equals("talendStats_DB") || cid.equals("talendMeter_DB");
@@ -261,6 +263,14 @@ if(useExistingConnection) {
}
%>
}
<%
if (useActiveDirectoryAuth) {
%>
url_<%=cid%> += ";encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;Authentication=ActiveDirectoryPassword";
url_<%=cid%> += ";database=" + <%=dbname%>;
<%
}
%>
url_<%=cid%> += ";applicationName=Talend;" + <%=dbproperties%>;
dbUser_<%=cid %> = <%=dbuser%>;

View File

@@ -7,8 +7,8 @@
</HEADER>
<FAMILIES>
<FAMILY>Databases/DB Specifics/Azure/SQL Data Warehouse</FAMILY>
<FAMILY>Cloud/Azure/SQL Data Warehouse</FAMILY>
<FAMILY>Databases/DB Specifics/Azure/Synapse Analytics</FAMILY>
<FAMILY>Cloud/Azure/Synapse Analytics</FAMILY>
</FAMILIES>
<DOCUMENTATION>
@@ -44,7 +44,7 @@
<PARAMETER
NAME="CONNECTION"
FIELD="COMPONENT_LIST"
REQUIRED="true" FILTER="tSQLDWHConnection"
REQUIRED="true" FILTER="tAzureSynapseConnection"
NUM_ROW="20"
SHOW_IF="USE_EXISTING_CONNECTION == 'true'"
DYNAMIC_SETTINGS="true"
@@ -233,7 +233,9 @@
<PARAMETER NAME="PROPERTIES" FIELD="TEXT" NUM_ROW="4" REPOSITORY_VALUE="PROPERTIES_STRING" SHOW_IF="USE_EXISTING_CONNECTION == 'false'">
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="ACTIVE_DIR_AUTH" FIELD="CHECK" NUM_ROW="6" SHOW_IF="USE_EXISTING_CONNECTION=='false'">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER NAME="ENCODING" FIELD="ENCODING_TYPE" NUM_ROW="9"
REQUIRED="true" SHOW="false">
<DEFAULT>"ISO-8859-15"</DEFAULT>
@@ -332,7 +334,15 @@
<CODEGENERATION>
<IMPORTS>
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="(DRIVER == 'MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="(DRIVER == 'MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="adal4j" MODULE="adal4j-1.6.5.jar" MVN="mvn:com.microsoft.azure/adal4j/1.6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-lang3" MODULE="commons-lang3-3.10.jar" MVN="mvn:org.apache.commons/commons-lang3/3.10" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-codec" MODULE="commons-codec-1.14.jar" MVN="mvn:commons-codec/commons-codec/1.14" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="gson" MODULE="gson-2.8.6.jar" MVN="mvn:com.google.code.gson/gson/2.8.6" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="oauth2-oidc-sdk" MODULE="oauth2-oidc-sdk-6.5.jar" MVN="mvn:com.nimbusds/oauth2-oidc-sdk/6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="json-smart" MODULE="json-smart-2.3.jar" MVN="mvn:net.minidev/json-smart/2.3" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="nimbus-jose-jwt" MODULE="nimbus-jose-jwt-8.11.jar" MVN="mvn:com.nimbusds/nimbus-jose-jwt/8.11" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="javax.mail" MODULE="javax.mail-1.6.2.jar" MVN="mvn:com.sun.mail/javax.mail/1.6.2" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
</IMPORTS>
</CODEGENERATION>

View File

@@ -43,7 +43,7 @@ FIELD_OPTIONS.ITEM.INSERTABLE=Insertable
FIELD_OPTIONS.ITEM.UPDATABLE=Updatable
FIELD_OPTIONS.ITEM.UPDATE_KEY=Key in update
FIELD_OPTIONS.NAME=Field options
HELP=org.talend.help.tSQLDWHOutput
HELP=org.talend.help.tAzureSynapseOutput
HOST.NAME=Host
IDENTITY_INSERT.NAME=Turn on identity insert
INSTANCE.NAME=Instance
@@ -99,4 +99,6 @@ DATASOURCE_ALIAS.NAME=Data source alias
DRIVER.NAME=JDBC Provider
DRIVER.ITEM.JTDS=Open source JTDS
DRIVER.ITEM.MSSQL_PROP=Microsoft
DRIVER.ITEM.MSSQL_PROP=Microsoft
ACTIVE_DIR_AUTH.NAME=Authenticate using Azure Active Directory

View File

@@ -16,8 +16,8 @@
</HEADER>
<FAMILIES>
<FAMILY>Databases/DB Specifics/Azure/SQL Data Warehouse</FAMILY>
<FAMILY>Cloud/Azure/SQL Data Warehouse</FAMILY>
<FAMILY>Databases/DB Specifics/Azure/Synapse Analytics</FAMILY>
<FAMILY>Cloud/Azure/Synapse Analytics</FAMILY>
</FAMILIES>
<DOCUMENTATION>
@@ -38,7 +38,7 @@
<PARAMETER
NAME="CONNECTION"
FIELD="COMPONENT_LIST"
REQUIRED="true" FILTER="tSQLDWHConnection"
REQUIRED="true" FILTER="tAzureSynapseConnection"
NUM_ROW="10"
DYNAMIC_SETTINGS="true"
/>

View File

@@ -1,6 +1,6 @@
#Created by JInto - www.guh-software.de
#Wed May 23 11:26:21 CST 2007
HELP=org.talend.help.tSQLDWHRollback
HELP=org.talend.help.tAzureSynapseRollback
LONG_NAME=Rollbacks all transactions not already commited in a selected MSSql connection
CLOSE.NAME=Close Connection
CONNECTION.NAME=Component List

View File

@@ -11,11 +11,13 @@ imports="
class DBRowBeginUtil extends DefaultDBRowUtil{
private String driver;
private boolean useActiveDirectoryAuth = false;
public void beforeComponentProcess(INode node){
super.beforeComponentProcess(node);
cid = node.getUniqueName();
this.driver = ElementParameterParser.getValue(node, "__DRIVER__");
this.useActiveDirectoryAuth = "true".equals(ElementParameterParser.getValue(node, "__ACTIVE_DIR_AUTH__"));
}
public void afterUseExistConnection(INode node) {
@@ -58,12 +60,20 @@ imports="
url_<%=cid%> += "//" + <%=dbname%>;
<%
} else {
%>
%>
url_<%=cid%> += ";databaseName=" + <%=dbname%>;
<%
}
%>
}
<%
if (useActiveDirectoryAuth) {
%>
url_<%=cid%> += ";encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;Authentication=ActiveDirectoryPassword";
url_<%=cid%> += ";database=" + <%=dbname%>;
<%
}
%>
url_<%=cid%> += ";applicationName=Talend;" + <%=dbproperties%>;
<%
}

View File

@@ -18,8 +18,8 @@
</HEADER>
<FAMILIES>
<FAMILY>Databases/DB Specifics/Azure/SQL Data Warehouse</FAMILY>
<FAMILY>Cloud/Azure/SQL Data Warehouse</FAMILY>
<FAMILY>Databases/DB Specifics/Azure/Synapse Analytics</FAMILY>
<FAMILY>Cloud/Azure/Synapse Analytics</FAMILY>
</FAMILIES>
<DOCUMENTATION>
@@ -49,7 +49,7 @@
<PARAMETER
NAME="CONNECTION"
FIELD="COMPONENT_LIST"
REQUIRED="true" FILTER="tSQLDWHConnection"
REQUIRED="true" FILTER="tAzureSynapseConnection"
NUM_ROW="1"
SHOW_IF="USE_EXISTING_CONNECTION == 'true'"
DYNAMIC_SETTINGS="true"
@@ -245,10 +245,14 @@
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="ACTIVE_DIR_AUTH" FIELD="CHECK" NUM_ROW="5" SHOW_IF="USE_EXISTING_CONNECTION=='false'">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER
NAME="PROPAGATE_RECORD_SET"
FIELD="CHECK"
NUM_ROW="5"
NUM_ROW="6"
>
<DEFAULT>false</DEFAULT>
</PARAMETER>
@@ -256,14 +260,14 @@
<PARAMETER
NAME="RECORD_SET_COLUMN"
FIELD="COLUMN_LIST"
NUM_ROW="5"
NUM_ROW="6"
SHOW_IF="PROPAGATE_RECORD_SET == 'true'"
/>
<PARAMETER
NAME="USE_PREPAREDSTATEMENT"
FIELD="CHECK"
NUM_ROW="6"
NUM_ROW="7"
>
<DEFAULT>false</DEFAULT>
</PARAMETER>
@@ -272,7 +276,7 @@
NAME="SET_PREPAREDSTATEMENT_PARAMETERS"
FIELD="TABLE"
REQUIRED="false"
NUM_ROW="7"
NUM_ROW="8"
NB_LINES="3"
SHOW_IF="(USE_PREPAREDSTATEMENT == 'true')"
>
@@ -315,7 +319,15 @@
<CODEGENERATION>
<IMPORTS>
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="(DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="(DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="adal4j" MODULE="adal4j-1.6.5.jar" MVN="mvn:com.microsoft.azure/adal4j/1.6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-lang3" MODULE="commons-lang3-3.10.jar" MVN="mvn:org.apache.commons/commons-lang3/3.10" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-codec" MODULE="commons-codec-1.14.jar" MVN="mvn:commons-codec/commons-codec/1.14" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="gson" MODULE="gson-2.8.6.jar" MVN="mvn:com.google.code.gson/gson/2.8.6" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="oauth2-oidc-sdk" MODULE="oauth2-oidc-sdk-6.5.jar" MVN="mvn:com.nimbusds/oauth2-oidc-sdk/6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="json-smart" MODULE="json-smart-2.3.jar" MVN="mvn:net.minidev/json-smart/2.3" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="nimbus-jose-jwt" MODULE="nimbus-jose-jwt-8.11.jar" MVN="mvn:com.nimbusds/nimbus-jose-jwt/8.11" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="javax.mail" MODULE="javax.mail-1.6.2.jar" MVN="mvn:com.sun.mail/javax.mail/1.6.2" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (USE_EXISTING_CONNECTION == 'false')" />
</IMPORTS>
</CODEGENERATION>

View File

@@ -8,7 +8,7 @@ DB_SCHEMA.NAME=Schema
DIE_ON_ERROR.NAME=Die on error
DSN.NAME=Datasource
ENCODING.NAME=Encoding
HELP=org.talend.help.tSQLDWHRow
HELP=org.talend.help.tAzureSynapseRow
HOST.NAME=Host
IDENTITY_INSERT.NAME=Turn on identity insert
INSTANCE.NAME=Instance
@@ -61,4 +61,6 @@ DATASOURCE_ALIAS.NAME=Data source alias
DRIVER.NAME=JDBC Provider
DRIVER.ITEM.JTDS=Open source JTDS
DRIVER.ITEM.MSSQL_PROP=Microsoft
DRIVER.ITEM.MSSQL_PROP=Microsoft
ACTIVE_DIR_AUTH.NAME=Authenticate using Azure Active Directory

View File

@@ -805,7 +805,11 @@
<DEFAULT IF="((DBTYPE!='AS400') AND (DBTYPE!='MSSQL'))">""</DEFAULT>
<DEFAULT IF="(DBTYPE=='AS400') OR (DBTYPE=='MSSQL')">"prompt=false"</DEFAULT>
</PARAMETER>
<PARAMETER NAME="MSSQL_ACTIVE_DIR_AUTH" FIELD="CHECK" NUM_ROW="12" SHOW_IF="(USE_EXISTING_CONNECTION == 'false') AND (DBTYPE=='MSSQL') AND (MSSQL_DRIVER=='MSSQL_PROP')">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER
NAME="NOTE"
FIELD="LABEL"
@@ -854,6 +858,14 @@
<IMPORT NAME="Driver_MaxDB" MODULE="sapdbc.jar" MVN="mvn:org.talend.libraries/sapdbc/6.0.0" REQUIRED_IF="DBTYPE=='MAXDB'" />
<IMPORT NAME="Driver-MSSQL" MODULE="jtds-1.3.1-patch-20190523.jar" MVN="mvn:net.sourceforge.jtds/jtds/1.3.1-patch-20190523" REQUIRED_IF="(USE_EXISTING_CONNECTION == 'false') AND (DBTYPE=='MSSQL') AND (MSSQL_DRIVER=='JTDS')" />
<IMPORT NAME="Driver-MSSQL-prop" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="(USE_EXISTING_CONNECTION == 'false') AND (DBTYPE=='MSSQL') AND (MSSQL_DRIVER=='MSSQL_PROP')" />
<IMPORT NAME="adal4j" MODULE="adal4j-1.6.5.jar" MVN="mvn:com.microsoft.azure/adal4j/1.6.5" REQUIRED_IF="(USE_EXISTING_CONNECTION == 'false') AND (DBTYPE=='MSSQL') AND (MSSQL_DRIVER=='MSSQL_PROP') AND (MSSQL_ACTIVE_DIR_AUTH == 'true')" />
<IMPORT NAME="commons-lang3" MODULE="commons-lang3-3.10.jar" MVN="mvn:org.apache.commons/commons-lang3/3.10" REQUIRED_IF="(USE_EXISTING_CONNECTION == 'false') AND (DBTYPE=='MSSQL') AND (MSSQL_DRIVER=='MSSQL_PROP') AND (MSSQL_ACTIVE_DIR_AUTH == 'true')" />
<IMPORT NAME="commons-codec" MODULE="commons-codec-1.14.jar" MVN="mvn:commons-codec/commons-codec/1.14" REQUIRED_IF="(USE_EXISTING_CONNECTION == 'false') AND (DBTYPE=='MSSQL') AND (MSSQL_DRIVER=='MSSQL_PROP') AND (MSSQL_ACTIVE_DIR_AUTH == 'true')" />
<IMPORT NAME="gson" MODULE="gson-2.8.6.jar" MVN="mvn:com.google.code.gson/gson/2.8.6" REQUIRED_IF="(USE_EXISTING_CONNECTION == 'false') AND (DBTYPE=='MSSQL') AND (MSSQL_DRIVER=='MSSQL_PROP') AND (MSSQL_ACTIVE_DIR_AUTH == 'true')" />
<IMPORT NAME="oauth2-oidc-sdk" MODULE="oauth2-oidc-sdk-6.5.jar" MVN="mvn:com.nimbusds/oauth2-oidc-sdk/6.5" REQUIRED_IF="(USE_EXISTING_CONNECTION == 'false') AND (DBTYPE=='MSSQL') AND (MSSQL_DRIVER=='MSSQL_PROP') AND (MSSQL_ACTIVE_DIR_AUTH == 'true')" />
<IMPORT NAME="json-smart" MODULE="json-smart-2.3.jar" MVN="mvn:net.minidev/json-smart/2.3" REQUIRED_IF="(USE_EXISTING_CONNECTION == 'false') AND (DBTYPE=='MSSQL') AND (MSSQL_DRIVER=='MSSQL_PROP') AND (MSSQL_ACTIVE_DIR_AUTH == 'true')" />
<IMPORT NAME="nimbus-jose-jwt" MODULE="nimbus-jose-jwt-8.11.jar" MVN="mvn:com.nimbusds/nimbus-jose-jwt/8.11" REQUIRED_IF="(USE_EXISTING_CONNECTION == 'false') AND (DBTYPE=='MSSQL') AND (MSSQL_DRIVER=='MSSQL_PROP') AND (MSSQL_ACTIVE_DIR_AUTH == 'true')" />
<IMPORT NAME="javax.mail" MODULE="javax.mail-1.6.2.jar" MVN="mvn:com.sun.mail/javax.mail/1.6.2" REQUIRED_IF="(USE_EXISTING_CONNECTION == 'false') AND (DBTYPE=='MSSQL') AND (MSSQL_DRIVER=='MSSQL_PROP') AND (MSSQL_ACTIVE_DIR_AUTH == 'true')" />
<IMPORT NAME="Driver-MYSQL5" MODULE="mysql-connector-java-5.1.30-bin.jar" MVN="mvn:org.talend.libraries/mysql-connector-java-5.1.30-bin/6.0.0" REQUIRED_IF="(USE_EXISTING_CONNECTION == 'false') and (DBTYPE=='MYSQL') and (DB_MYSQL_VERSION=='MYSQL_5')"/>
<IMPORT NAME="Driver-MYSQL8" MODULE="mysql-connector-java-8.0.18.jar" MVN="mvn:mysql/mysql-connector-java/8.0.18" REQUIRED_IF="(DB_MYSQL_VERSION == 'MYSQL_8') AND (USE_EXISTING_CONNECTION == 'false') AND (DBTYPE=='MYSQL')" />
<IMPORT NAME="Driver-MARIADB" MODULE="mariadb-java-client-2.5.3.jar" MVN="mvn:org.mariadb.jdbc/mariadb-java-client/2.5.3" REQUIRED_IF="(USE_EXISTING_CONNECTION == 'false') and (DBTYPE=='MYSQL') and (DB_MYSQL_VERSION=='MARIADB')" />

View File

@@ -898,10 +898,11 @@ class MSSQLManager extends Manager {
private boolean useExistingConnection;
private String connection;
private String driver;
private boolean useADAuth;
private static final String SEPARATOR = ";";
public MSSQLManager(String host, String port, String dbName, String dbSchema, String tableName, String userName, boolean useExistingConnection, String connection, String cid, String driver, String additionalParams) {
public MSSQLManager(String host, String port, String dbName, String dbSchema, String tableName, String userName, boolean useExistingConnection, String connection, String cid, String driver, String additionalParams, boolean useADAuth) {
super(dbName, tableName, userName, cid, additionalParams);
this.host = host;
this.port = port;
@@ -909,6 +910,7 @@ class MSSQLManager extends Manager {
this.useExistingConnection = useExistingConnection;
this.connection = connection;
this.driver = driver;
this.useADAuth = useADAuth;
}
protected String getDriver() {
if("JTDS".equals(driver)) {
@@ -930,7 +932,14 @@ class MSSQLManager extends Manager {
} else {
connectionUrl.append(" + \";databaseName=\" + ");
}
connectionUrl.append(dbName);
connectionUrl.append(dbName);
if ("MSSQL_PROP".equals(driver) && useADAuth) {
connectionUrl.append(" + \";encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;Authentication=ActiveDirectoryPassword\"");
connectionUrl.append(" + \";database=\" + ");
connectionUrl.append(dbName);
}
return connectionUrl.toString();
}
public String getSeparator(){
@@ -2239,7 +2248,8 @@ class ManagerFactory {
boolean useExistingConnection = ("true").equals(ElementParameterParser.getValue(node, "__USE_EXISTING_CONNECTION__"));
String connection = stringUtil.getString(ElementParameterParser.getValue(node, "__CONNECTION_MSSQL__"));
String driver = ElementParameterParser.getValue(node, "__MSSQL_DRIVER__");
manager = new MSSQLManager(host, port, dbName,dbSchema, tableName, userName, useExistingConnection, connection, cid, driver, additionalParams);
boolean useADAuth = ("true").equals(ElementParameterParser.getValue(node, "__MSSQL_ACTIVE_DIR_AUTH__"));
manager = new MSSQLManager(host, port, dbName,dbSchema, tableName, userName, useExistingConnection, connection, cid, driver, additionalParams, useADAuth);
} else if(("MYSQL").equals(dbType)) {
String host = ElementParameterParser.getValue(node, "__HOST__");
String port = ElementParameterParser.getValue(node, "__PORT__");

View File

@@ -59,6 +59,9 @@ ODBCNAME.NAME=ODBC Name
PASS.NAME=Password
PORT.NAME=Port
PROPERTIES.NAME=Additional JDBC Parameters
MSSQL_ACTIVE_DIR_AUTH.NAME=Authenticate using Azure Active Directory
RUNNING_MODE.ITEM.HSQLDB_INPROGRESS_PERSISTENT=HSQLDb In Process Persistent
RUNNING_MODE.ITEM.HSQLDB_SERVER=HSQLDb Server
RUNNING_MODE.ITEM.HSQLDB_WEBSERVER=HSQLDb WebServer

View File

@@ -181,15 +181,27 @@
</PARAMETERS>
<ADVANCED_PARAMETERS>
<PARAMETER NAME="PROPERTIES" FIELD="TEXT" NUM_ROW="10" REPOSITORY_VALUE="PROPERTIES_STRING" SHOW_IF="(#LINK@CONNECTOR.OUT.TABLE_REF == '0') AND (USE_EXISTING_CONNECTION == 'false')">
<PARAMETER NAME="PROPERTIES" FIELD="TEXT" NUM_ROW="10" REPOSITORY_VALUE="PROPERTIES_STRING" SHOW_IF="(#LINK@CONNECTOR.OUT.TABLE_REF == '0') AND (USE_EXISTING_CONNECTION == 'false')">
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="ACTIVE_DIR_AUTH" FIELD="CHECK" NUM_ROW="16" SHOW_IF="(DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')">
<DEFAULT>false</DEFAULT>
</PARAMETER>
</ADVANCED_PARAMETERS>
<CODEGENERATION>
<IMPORTS>
<IMPORT NAME="Driver-jTDS" MODULE="jtds-1.3.1-patch-20190523.jar" MVN="mvn:net.sourceforge.jtds/jtds/1.3.1-patch-20190523" REQUIRED_IF="(DRIVER == 'JTDS') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="(DRIVER == 'MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="adal4j" MODULE="adal4j-1.6.5.jar" MVN="mvn:com.microsoft.azure/adal4j/1.6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-lang3" MODULE="commons-lang3-3.10.jar" MVN="mvn:org.apache.commons/commons-lang3/3.10" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-codec" MODULE="commons-codec-1.14.jar" MVN="mvn:commons-codec/commons-codec/1.14" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="gson" MODULE="gson-2.8.6.jar" MVN="mvn:com.google.code.gson/gson/2.8.6" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="oauth2-oidc-sdk" MODULE="oauth2-oidc-sdk-6.5.jar" MVN="mvn:com.nimbusds/oauth2-oidc-sdk/6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="json-smart" MODULE="json-smart-2.3.jar" MVN="mvn:net.minidev/json-smart/2.3" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="nimbus-jose-jwt" MODULE="nimbus-jose-jwt-8.11.jar" MVN="mvn:com.nimbusds/nimbus-jose-jwt/8.11" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="javax.mail" MODULE="javax.mail-1.6.2.jar" MVN="mvn:com.sun.mail/javax.mail/1.6.2" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
</IMPORTS>
</CODEGENERATION>

View File

@@ -41,4 +41,6 @@ CONNECTION.NAME=Component List
DRIVER.NAME=JDBC Provider
DRIVER.ITEM.JTDS=Open source JTDS
DRIVER.ITEM.MSSQL_PROP=Microsoft
DRIVER.ITEM.MSSQL_PROP=Microsoft
ACTIVE_DIR_AUTH.NAME=Authenticate using Azure Active Directory

View File

@@ -77,6 +77,7 @@ imports="
boolean useExistingConn = false;
String dbproperties = null;
String driver = "JTDS";
boolean useActiveDirectoryAuth = false;
if(previousNode != null) {
dbhost = ElementParameterParser.getValue(previousNode, "__HOST__");
dbport = ElementParameterParser.getValue(previousNode, "__PORT__");
@@ -85,6 +86,7 @@ imports="
useExistingConn = ("true").equals(ElementParameterParser.getValue(previousNode, "__USE_EXISTING_CONNECTION__"));
dbproperties = ElementParameterParser.getValue(previousNode, "__PROPERTIES__");
driver = ElementParameterParser.getValue(previousNode, "__DRIVER__");
useActiveDirectoryAuth = "true".equals(ElementParameterParser.getValue(previousNode, "__ACTIVE_DIR_AUTH__"));
}
String whereClause = ElementParameterParser.getValue(node, "__WHERE_CLAUSE__");
@@ -129,6 +131,14 @@ if(useExistingConn) {
url_<%=cid%> += ";databaseName=" + <%=dbname%>;
<%}%>
}
<%
if (driver.equals("MSSQL_PROP") && useActiveDirectoryAuth) {
%>
url_<%=cid%> += ";encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;Authentication=ActiveDirectoryPassword";
url_<%=cid%> += ";database=" + <%=dbname%>;
<%
}
%>
url_<%=cid%> += ";appName=" + projectName + ";" + <%=dbproperties%>;
String dbUser_<%=cid %> = <%=dbuser%>;

View File

@@ -107,7 +107,7 @@ imports="
}
else{
%>
String url_<%=cid%> = "jdbc:sqlanywhere:Host=" + <%=dbhost %> + ":" + <%=dbport %> + ";DatabaseName" + <%=dbname %> + ";" + <%=dbproperties%>;
String url_<%=cid%> = "jdbc:sqlanywhere:Host=" + <%=dbhost %> + ":" + <%=dbport %> + ";DatabaseName=" + <%=dbname %> + ";" + <%=dbproperties%>;
<%
}
}

View File

@@ -178,7 +178,7 @@
<IMPORTS>
<IMPORT NAME="Java_DOM4J_2.1.1" MODULE="dom4j-2.1.1.jar" MVN="mvn:org.dom4j/dom4j/2.1.1" REQUIRED_IF="READ_BY == 'XPATH'" BundleID="" />
<IMPORT NAME="Java_JAXEN_1.1.6" MODULE="jaxen-1.1.6.jar" MVN="mvn:jaxen/jaxen/1.1.6" REQUIRED_IF="READ_BY == 'XPATH'" BundleID="" />
<IMPORT NAME="json-lib" MODULE="json-lib-2.4.5-talend.jar" MVN="mvn:net.sf.json-lib/json-lib/2.4.5-talend" REQUIRED_IF="READ_BY == 'XPATH'" />
<IMPORT NAME="json-lib" MODULE="json-lib-2.4.6-talend.jar" MVN="mvn:net.sf.json-lib/json-lib/2.4.6-talend" REQUIRED_IF="READ_BY == 'XPATH'" />
<IMPORT NAME="commons_lang" MODULE="commons-lang-2.6.jar" MVN="mvn:commons-lang/commons-lang/2.6" UrlPath="platform:/plugin/org.talend.libraries.apache.common/lib/commons-lang-2.6.jar" REQUIRED_IF="READ_BY == 'XPATH'" />
<IMPORT NAME="commons_logging" MODULE="commons-logging-1.1.1.jar" MVN="mvn:org.talend.libraries/commons-logging-1.1.1/6.0.0" UrlPath="platform:/base/plugins/org.apache.commons.logging_1.1.1.v201101211721.jar" REQUIRED_IF="READ_BY == 'XPATH'" />
<IMPORT NAME="ezmorph" MODULE="ezmorph-1.0.6.jar" MVN="mvn:org.talend.libraries/ezmorph-1.0.6/6.0.0" UrlPath="platform:/plugin/org.talend.libraries.jackson/lib/ezmorph-1.0.6.jar" REQUIRED_IF="READ_BY == 'XPATH'" />

View File

@@ -163,7 +163,7 @@
<!-- xpath -->
<IMPORT NAME="Java_DOM4J_2.1.1" MODULE="dom4j-2.1.1.jar" MVN="mvn:org.dom4j/dom4j/2.1.1" REQUIRED_IF="(READ_BY == 'XPATH')" BundleID="" />
<IMPORT NAME="Java_JAXEN_1.1.6" MODULE="jaxen-1.1.6.jar" MVN="mvn:jaxen/jaxen/1.1.6" REQUIRED_IF="(READ_BY == 'XPATH')" BundleID="" />
<IMPORT NAME="json-lib" MODULE="json-lib-2.4.5-talend.jar" MVN="mvn:net.sf.json-lib/json-lib/2.4.5-talend" REQUIRED_IF="(READ_BY == 'XPATH')" />
<IMPORT NAME="json-lib" MODULE="json-lib-2.4.6-talend.jar" MVN="mvn:net.sf.json-lib/json-lib/2.4.6-talend" REQUIRED_IF="(READ_BY == 'XPATH')" />
<IMPORT NAME="commons_lang" MODULE="commons-lang-2.6.jar" MVN="mvn:commons-lang/commons-lang/2.6" UrlPath="platform:/plugin/org.talend.libraries.apache.common/lib/commons-lang-2.6.jar"
REQUIRED_IF="(READ_BY == 'XPATH')" />
<IMPORT NAME="commons_logging" MODULE="commons-logging-1.1.1.jar" MVN="mvn:org.talend.libraries/commons-logging-1.1.1/6.0.0" UrlPath="platform:/base/plugins/org.apache.commons.logging_1.1.1.v201101211721.jar"

View File

@@ -41,6 +41,8 @@ boolean fire_triggers = ("true").equals(ElementParameterParser.getValue(node, "_
String additional_query_parameters = ElementParameterParser.getValue(node, "__ADDITIONAL_QUERY_PARAMETERS__");
boolean convertToUppercase = false; // not active this function
boolean useExistingDynamic = ("true").equals(ElementParameterParser.getValue(node, "__USE_EXISTING_DYNAMIC__"));
boolean useActiveDirectoryAuth = "true".equals(ElementParameterParser.getValue(node, "__ACTIVE_DIR_AUTH__"));
%>
int deletedCount_<%=cid%>=0;
<%@ include file="../templates/Log4j/Log4jDBConnUtil.javajet"%>

View File

@@ -301,6 +301,10 @@
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="ACTIVE_DIR_AUTH" FIELD="CHECK" NUM_ROW="6" SHOW_IF="(DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER
NAME="FIELDS_TERMINATED_BY"
FIELD="TEXT"
@@ -402,6 +406,14 @@
<IMPORTS>
<IMPORT NAME="Driver-jTDS" MODULE="jtds-1.3.1-patch-20190523.jar" MVN="mvn:net.sourceforge.jtds/jtds/1.3.1-patch-20190523" REQUIRED_IF="(DRIVER == 'JTDS') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="(DRIVER == 'MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="adal4j" MODULE="adal4j-1.6.5.jar" MVN="mvn:com.microsoft.azure/adal4j/1.6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-lang3" MODULE="commons-lang3-3.10.jar" MVN="mvn:org.apache.commons/commons-lang3/3.10" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-codec" MODULE="commons-codec-1.14.jar" MVN="mvn:commons-codec/commons-codec/1.14" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="gson" MODULE="gson-2.8.6.jar" MVN="mvn:com.google.code.gson/gson/2.8.6" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="oauth2-oidc-sdk" MODULE="oauth2-oidc-sdk-6.5.jar" MVN="mvn:com.nimbusds/oauth2-oidc-sdk/6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="json-smart" MODULE="json-smart-2.3.jar" MVN="mvn:net.minidev/json-smart/2.3" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="nimbus-jose-jwt" MODULE="nimbus-jose-jwt-8.11.jar" MVN="mvn:com.nimbusds/nimbus-jose-jwt/8.11" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="javax.mail" MODULE="javax.mail-1.6.2.jar" MVN="mvn:com.sun.mail/javax.mail/1.6.2" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
</IMPORTS>
</CODEGENERATION>

View File

@@ -59,3 +59,4 @@ FIRE_TRIGGERS.NAME=Fire Triggers
USE_EXISTING_DYNAMIC.NAME=Use existing dynamic schema
DYNAMIC.NAME=Dynamic schema
ADDITIONAL_QUERY_PARAMETERS.NAME=Additional query parameters
ACTIVE_DIR_AUTH.NAME=Authenticate using Azure Active Directory

View File

@@ -12,6 +12,7 @@ imports="
public void createURL(INode node) {
super.createURL(node);
String driver = ElementParameterParser.getValue(node, "__DRIVER__");
boolean useActiveDirectoryAuth = "true".equals(ElementParameterParser.getValue(node, "__ACTIVE_DIR_AUTH__"));
%>
<%
if(driver.equals("JTDS")) {
@@ -42,6 +43,15 @@ imports="
}
%>
}
<%
if (driver.equals("MSSQL_PROP") && useActiveDirectoryAuth) {
%>
url_<%=cid%> += ";encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;Authentication=ActiveDirectoryPassword";
url_<%=cid%> += ";database=" + <%=dbname%>;
<%
}
%>
url_<%=cid%> += ";appName=" + projectName + ";" + <%=dbproperties%>;
<%
}

View File

@@ -189,6 +189,9 @@
</PARAMETERS>
<ADVANCED_PARAMETERS>
<PARAMETER NAME="ACTIVE_DIR_AUTH" FIELD="CHECK" NUM_ROW="6" SHOW_IF="DRIVER=='MSSQL_PROP'">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER NAME="AUTO_COMMIT" FIELD="CHECK" NUM_ROW="10">
<DEFAULT>false</DEFAULT>
</PARAMETER>
@@ -199,10 +202,18 @@
<CODEGENERATION>
<IMPORTS>
<IMPORT NAME="Driver-jTDS" MODULE="jtds-1.3.1-patch-20190523.jar" MVN="mvn:net.sourceforge.jtds/jtds/1.3.1-patch-20190523" REQUIRED_IF="DRIVER=='JTDS'" />
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="DRIVER=='MSSQL_PROP'" />
<IMPORT NAME="slf4j-api-1.7.25.jar" MODULE="slf4j-api-1.7.25.jar" MVN="mvn:org.slf4j/slf4j-api/1.7.25" REQUIRED_IF="(USE_SHARED_CONNECTION == 'true' AND SPECIFY_DATASOURCE_ALIAS=='false')" />
<IMPORT NAME="slf4j-log4j12-1.7.25.jar" MODULE="slf4j-log4j12-1.7.25.jar" MVN="mvn:org.slf4j/slf4j-log4j12/1.7.25" REQUIRED_IF="(USE_SHARED_CONNECTION == 'true' AND SPECIFY_DATASOURCE_ALIAS=='false')" />
<IMPORT NAME="Driver-jTDS" MODULE="jtds-1.3.1-patch-20190523.jar" MVN="mvn:net.sourceforge.jtds/jtds/1.3.1-patch-20190523" REQUIRED_IF="DRIVER=='JTDS'" />
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="DRIVER=='MSSQL_PROP'" />
<IMPORT NAME="slf4j-api-1.7.25.jar" MODULE="slf4j-api-1.7.25.jar" MVN="mvn:org.slf4j/slf4j-api/1.7.25" REQUIRED_IF="(USE_SHARED_CONNECTION == 'true' AND SPECIFY_DATASOURCE_ALIAS=='false')" />
<IMPORT NAME="slf4j-log4j12-1.7.25.jar" MODULE="slf4j-log4j12-1.7.25.jar" MVN="mvn:org.slf4j/slf4j-log4j12/1.7.25" REQUIRED_IF="(USE_SHARED_CONNECTION == 'true' AND SPECIFY_DATASOURCE_ALIAS=='false')" />
<IMPORT NAME="adal4j" MODULE="adal4j-1.6.5.jar" MVN="mvn:com.microsoft.azure/adal4j/1.6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP')" />
<IMPORT NAME="commons-lang3" MODULE="commons-lang3-3.10.jar" MVN="mvn:org.apache.commons/commons-lang3/3.10" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP')" />
<IMPORT NAME="commons-codec" MODULE="commons-codec-1.14.jar" MVN="mvn:commons-codec/commons-codec/1.14" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP')" />
<IMPORT NAME="gson" MODULE="gson-2.8.6.jar" MVN="mvn:com.google.code.gson/gson/2.8.6" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP')" />
<IMPORT NAME="oauth2-oidc-sdk" MODULE="oauth2-oidc-sdk-6.5.jar" MVN="mvn:com.nimbusds/oauth2-oidc-sdk/6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP')" />
<IMPORT NAME="json-smart" MODULE="json-smart-2.3.jar" MVN="mvn:net.minidev/json-smart/2.3" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP')" />
<IMPORT NAME="nimbus-jose-jwt" MODULE="nimbus-jose-jwt-8.11.jar" MVN="mvn:com.nimbusds/nimbus-jose-jwt/8.11" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP')" />
<IMPORT NAME="javax.mail" MODULE="javax.mail-1.6.2.jar" MVN="mvn:com.sun.mail/javax.mail/1.6.2" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP')" />
</IMPORTS>
</CODEGENERATION>

View File

@@ -27,4 +27,6 @@ DATASOURCE_ALIAS.NAME=Data source alias
DRIVER.NAME=JDBC Provider
DRIVER.ITEM.JTDS=Open source JTDS
DRIVER.ITEM.MSSQL_PROP=Microsoft
DRIVER.ITEM.MSSQL_PROP=Microsoft
ACTIVE_DIR_AUTH.NAME=Authenticate using Azure Active Directory

View File

@@ -54,6 +54,7 @@ imports="
public void setURL(INode node) {
String dbschema = ElementParameterParser.getValue(node, "__DB_SCHEMA__");
boolean useActiveDirectoryAuth = "true".equals(ElementParameterParser.getValue(node, "__ACTIVE_DIR_AUTH__"));
%>
String port_<%=cid%> = <%=dbport%>;
String dbname_<%=cid%> = <%=dbname%> ;
@@ -84,6 +85,14 @@ imports="
}
%>
}
<%
if (driver.equals("MSSQL_PROP") && useActiveDirectoryAuth) {
%>
url_<%=cid%> += ";encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;Authentication=ActiveDirectoryPassword";
url_<%=cid%> += ";database=" + <%=dbname%>;
<%
}
%>
url_<%=cid%> += ";appName=" + projectName + ";" + <%=dbproperties%>;
String dbschema_<%=cid%> = <%=dbschema%>;
<%
@@ -123,7 +132,7 @@ imports="
net.sourceforge.jtds.jdbc.TalendNTextImpl tNTextImpl_<%=cid %> = new net.sourceforge.jtds.jdbc.TalendNTextImpl(clob_<%=cid %>);
tmpContent_<%=cid%> = tNTextImpl_<%=cid %>.getValue();
}else{
tmpContent_<%=cid%> = null;
tmpContent_<%=cid%> = null;
}
<%
}else{

View File

@@ -233,6 +233,10 @@
<DEFAULT>"noDatetimeStringSync=true"</DEFAULT>
</PARAMETER>
<PARAMETER NAME="ACTIVE_DIR_AUTH" FIELD="CHECK" NUM_ROW="6" SHOW_IF="(DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER
NAME="ENCODING"
FIELD="ENCODING_TYPE"
@@ -258,9 +262,17 @@
<CODEGENERATION>
<IMPORTS>
<IMPORT NAME="Driver-jTDS" MODULE="jtds-1.3.1-patch-20190523.jar" MVN="mvn:net.sourceforge.jtds/jtds/1.3.1-patch-20190523" REQUIRED_IF="(DRIVER == 'JTDS') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="(DRIVER == 'MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Talend_MssqlUtil" MODULE="talend_DB_mssqlUtil-1.4.jar" MVN="mvn:org.talend.components.lib/talend_DB_mssqlUtil/1.4" UrlPath="platform:/plugin/org.talend.libraries.custom/lib/talend_DB_mssqlUtil-1.4.jar" REQUIRED="true" />
<IMPORT NAME="Driver-jTDS" MODULE="jtds-1.3.1-patch-20190523.jar" MVN="mvn:net.sourceforge.jtds/jtds/1.3.1-patch-20190523" REQUIRED_IF="(DRIVER == 'JTDS') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="(DRIVER == 'MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Talend_MssqlUtil" MODULE="talend_DB_mssqlUtil-1.4.jar" MVN="mvn:org.talend.components.lib/talend_DB_mssqlUtil/1.4" UrlPath="platform:/plugin/org.talend.libraries.custom/lib/talend_DB_mssqlUtil-1.4.jar" REQUIRED="true" />
<IMPORT NAME="adal4j" MODULE="adal4j-1.6.5.jar" MVN="mvn:com.microsoft.azure/adal4j/1.6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-lang3" MODULE="commons-lang3-3.10.jar" MVN="mvn:org.apache.commons/commons-lang3/3.10" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-codec" MODULE="commons-codec-1.14.jar" MVN="mvn:commons-codec/commons-codec/1.14" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="gson" MODULE="gson-2.8.6.jar" MVN="mvn:com.google.code.gson/gson/2.8.6" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="oauth2-oidc-sdk" MODULE="oauth2-oidc-sdk-6.5.jar" MVN="mvn:com.nimbusds/oauth2-oidc-sdk/6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="json-smart" MODULE="json-smart-2.3.jar" MVN="mvn:net.minidev/json-smart/2.3" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="nimbus-jose-jwt" MODULE="nimbus-jose-jwt-8.11.jar" MVN="mvn:com.nimbusds/nimbus-jose-jwt/8.11" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="javax.mail" MODULE="javax.mail-1.6.2.jar" MVN="mvn:com.sun.mail/javax.mail/1.6.2" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
</IMPORTS>
</CODEGENERATION>

View File

@@ -49,4 +49,6 @@ DATASOURCE_ALIAS.NAME=Data source alias
DRIVER.NAME=JDBC Provider
DRIVER.ITEM.JTDS=Open source JTDS
DRIVER.ITEM.MSSQL_PROP=Microsoft
DRIVER.ITEM.MSSQL_PROP=Microsoft
ACTIVE_DIR_AUTH.NAME=Authenticate using Azure Active Directory

View File

@@ -69,7 +69,9 @@ skeleton="../templates/db_output_bulk.skeleton"
boolean isEnableDebug = ("true").equals(ElementParameterParser.getValue(node,"__ENABLE_DEBUG_MODE__"));
boolean usingStatsLogs=cid.equals("talendLogs_DB") || cid.equals("talendStats_DB") || cid.equals("talendMeter_DB");
boolean useBatchSize = "true".equals(ElementParameterParser.getValue(node,"__USE_BATCH_SIZE__"));
String batchSize=ElementParameterParser.getValue(node,"__BATCH_SIZE__");
String batchSize=ElementParameterParser.getValue(node,"__BATCH_SIZE__");
boolean useActiveDirectoryAuth = "true".equals(ElementParameterParser.getValue(node, "__ACTIVE_DIR_AUTH__"));
String rejectConnName = null;
List<? extends IConnection> rejectConns = node.getOutgoingConnections("REJECT");

View File

@@ -233,11 +233,15 @@
<PARAMETER NAME="PROPERTIES" FIELD="TEXT" NUM_ROW="4" REPOSITORY_VALUE="PROPERTIES_STRING" SHOW_IF="USE_EXISTING_CONNECTION == 'false'">
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="ACTIVE_DIR_AUTH" FIELD="CHECK" NUM_ROW="6" SHOW_IF="(DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER
NAME="USE_ALTERNATE_SCHEMA"
FIELD="CHECK"
NUM_ROW="5"
NUM_ROW="7"
SHOW_IF="USE_EXISTING_CONNECTION == 'true'"
>
<DEFAULT>false</DEFAULT>
@@ -245,7 +249,7 @@
<PARAMETER
NAME="ALTERNATE_SCHEMA"
FIELD="TEXT"
NUM_ROW="6"
NUM_ROW="8"
REQUIRED="true"
SHOW_IF="(USE_EXISTING_CONNECTION == 'true') AND (USE_ALTERNATE_SCHEMA == 'true')"
>
@@ -352,7 +356,15 @@
<IMPORTS>
<IMPORT NAME="Driver-jTDS" MODULE="jtds-1.3.1-patch-20190523.jar" MVN="mvn:net.sourceforge.jtds/jtds/1.3.1-patch-20190523"
REQUIRED_IF="(DRIVER == 'JTDS') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="(DRIVER == 'MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="(DRIVER == 'MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="adal4j" MODULE="adal4j-1.6.5.jar" MVN="mvn:com.microsoft.azure/adal4j/1.6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-lang3" MODULE="commons-lang3-3.10.jar" MVN="mvn:org.apache.commons/commons-lang3/3.10" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-codec" MODULE="commons-codec-1.14.jar" MVN="mvn:commons-codec/commons-codec/1.14" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="gson" MODULE="gson-2.8.6.jar" MVN="mvn:com.google.code.gson/gson/2.8.6" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="oauth2-oidc-sdk" MODULE="oauth2-oidc-sdk-6.5.jar" MVN="mvn:com.nimbusds/oauth2-oidc-sdk/6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="json-smart" MODULE="json-smart-2.3.jar" MVN="mvn:net.minidev/json-smart/2.3" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="nimbus-jose-jwt" MODULE="nimbus-jose-jwt-8.11.jar" MVN="mvn:com.nimbusds/nimbus-jose-jwt/8.11" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="javax.mail" MODULE="javax.mail-1.6.2.jar" MVN="mvn:com.sun.mail/javax.mail/1.6.2" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
</IMPORTS>
</CODEGENERATION>

View File

@@ -1305,13 +1305,12 @@ if(incomingConnName != null && columnList != null){
<%
}
%>
<%if(isEnableDebug){dbLog.data().sqlDebugPrint("globalMap.get(\""+cid+"_QUERY\")");}%>
insertedCount_<%=cid%> = insertedCount_<%=cid%> + pstmtInsert_<%=cid %>.executeUpdate();
nb_line_<%=cid%>++;
<%dbLog.data().inserting(dbLog.var("nb_line"));%>
}else{
nb_line_<%=cid%>++;
<%if(isEnableDebug){dbLog.data().sqlDebugPrint("globalMap.get(\""+cid+"_QUERY\")");}%>
<%dbLog.data().updating(dbLog.var("nb_line"));%>
}
} catch(java.lang.Exception e) {
@@ -1347,7 +1346,9 @@ if(incomingConnName != null && columnList != null){
}
}
%>
}
} finally {
<%if(isEnableDebug){dbLog.data().sqlDebugPrint("globalMap.get(\""+cid+"_QUERY\")");}%>
}
<%
} else if (("DELETE").equals(dataAction)) {

View File

@@ -101,4 +101,6 @@ DRIVER.NAME=JDBC Provider
DRIVER.ITEM.JTDS=Open source JTDS
DRIVER.ITEM.MSSQL_PROP=Microsoft
USE_ALTERNATE_SCHEMA.NAME=Use alternate schema
ALTERNATE_SCHEMA.NAME=Schema
ALTERNATE_SCHEMA.NAME=Schema
ACTIVE_DIR_AUTH.NAME=Authenticate using Azure Active Directory

View File

@@ -225,7 +225,11 @@
SHOW_IF="USE_EXISTING_CONNECTION == 'false'">
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="ACTIVE_DIR_AUTH" FIELD="CHECK" NUM_ROW="6" SHOW_IF="(DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER
NAME="FIELDSEPARATOR"
FIELD="TEXT"
@@ -316,6 +320,7 @@
<TEMPLATE_PARAM SOURCE="self.DBNAME" TARGET="tMBE.DBNAME" />
<TEMPLATE_PARAM SOURCE="self.DB_SCHEMA" TARGET="tMBE.DB_SCHEMA" />
<TEMPLATE_PARAM SOURCE="self.PROPERTIES" TARGET="tMBE.PROPERTIES" />
<TEMPLATE_PARAM SOURCE="self.ACTIVE_DIR_AUTH" TARGET="tMBE.ACTIVE_DIR_AUTH" />
<TEMPLATE_PARAM SOURCE="self.USER" TARGET="tMBE.USER" />
<TEMPLATE_PARAM SOURCE="self.PASS" TARGET="tMBE.PASS" />
<TEMPLATE_PARAM SOURCE="self.TABLE" TARGET="tMBE.TABLE" />

View File

@@ -47,4 +47,6 @@ ENCODING.NAME=Encoding
DRIVER.NAME=JDBC Provider
DRIVER.ITEM.JTDS=Open source JTDS
DRIVER.ITEM.MSSQL_PROP=Microsoft
DRIVER.ITEM.MSSQL_PROP=Microsoft
ACTIVE_DIR_AUTH.NAME=Authenticate using Azure Active Directory

View File

@@ -34,6 +34,7 @@ imports="
}
public void setURL(INode node) {
boolean useActiveDirectoryAuth = "true".equals(ElementParameterParser.getValue(node, "__ACTIVE_DIR_AUTH__"));
%>
String port_<%=cid%> = <%=dbport%>;
String dbname_<%=cid%> = <%=dbname%> ;
@@ -64,6 +65,14 @@ imports="
}
%>
}
<%
if (driver.equals("MSSQL_PROP") && useActiveDirectoryAuth) {
%>
url_<%=cid%> += ";encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;Authentication=ActiveDirectoryPassword";
url_<%=cid%> += ";database=" + <%=dbname%>;
<%
}
%>
url_<%=cid%> += ";appName=" + projectName + ";" + <%=dbproperties%>;
<%
}

View File

@@ -245,10 +245,14 @@
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="ACTIVE_DIR_AUTH" FIELD="CHECK" NUM_ROW="6" SHOW_IF="(DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER
NAME="PROPAGATE_RECORD_SET"
FIELD="CHECK"
NUM_ROW="5"
NUM_ROW="8"
>
<DEFAULT>false</DEFAULT>
</PARAMETER>
@@ -256,14 +260,14 @@
<PARAMETER
NAME="RECORD_SET_COLUMN"
FIELD="COLUMN_LIST"
NUM_ROW="5"
NUM_ROW="10"
SHOW_IF="PROPAGATE_RECORD_SET == 'true'"
/>
<PARAMETER
NAME="USE_PREPAREDSTATEMENT"
FIELD="CHECK"
NUM_ROW="6"
NUM_ROW="15"
>
<DEFAULT>false</DEFAULT>
</PARAMETER>
@@ -272,7 +276,7 @@
NAME="SET_PREPAREDSTATEMENT_PARAMETERS"
FIELD="TABLE"
REQUIRED="false"
NUM_ROW="7"
NUM_ROW="20"
NB_LINES="3"
SHOW_IF="(USE_PREPAREDSTATEMENT == 'true')"
>
@@ -294,6 +298,7 @@
<ITEM NAME="Object" VALUE="Object"/>
<ITEM NAME="Short" VALUE="Short"/>
<ITEM NAME="String" VALUE="String"/>
<ITEM NAME="NString" VALUE="NString"/>
<ITEM NAME="Time" VALUE="Time"/>
<ITEM NAME="Null" VALUE="Null"/>
</ITEMS>
@@ -315,8 +320,16 @@
<CODEGENERATION>
<IMPORTS>
<IMPORT NAME="Driver-jTDS" MODULE="jtds-1.3.1-patch-20190523.jar" MVN="mvn:net.sourceforge.jtds/jtds/1.3.1-patch-20190523" REQUIRED_IF="(DRIVER=='JTDS') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="(DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Driver-jTDS" MODULE="jtds-1.3.1-patch-20190523.jar" MVN="mvn:net.sourceforge.jtds/jtds/1.3.1-patch-20190523" REQUIRED_IF="(DRIVER=='JTDS') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="(DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="adal4j" MODULE="adal4j-1.6.5.jar" MVN="mvn:com.microsoft.azure/adal4j/1.6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-lang3" MODULE="commons-lang3-3.10.jar" MVN="mvn:org.apache.commons/commons-lang3/3.10" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-codec" MODULE="commons-codec-1.14.jar" MVN="mvn:commons-codec/commons-codec/1.14" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="gson" MODULE="gson-2.8.6.jar" MVN="mvn:com.google.code.gson/gson/2.8.6" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="oauth2-oidc-sdk" MODULE="oauth2-oidc-sdk-6.5.jar" MVN="mvn:com.nimbusds/oauth2-oidc-sdk/6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="json-smart" MODULE="json-smart-2.3.jar" MVN="mvn:net.minidev/json-smart/2.3" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="nimbus-jose-jwt" MODULE="nimbus-jose-jwt-8.11.jar" MVN="mvn:com.nimbusds/nimbus-jose-jwt/8.11" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="javax.mail" MODULE="javax.mail-1.6.2.jar" MVN="mvn:com.sun.mail/javax.mail/1.6.2" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
</IMPORTS>
</CODEGENERATION>

View File

@@ -51,6 +51,7 @@ SET_PREPAREDSTATEMENT_PARAMETERS.ITEM.PARAMETER_TYPE.ITEM.Long=Long
SET_PREPAREDSTATEMENT_PARAMETERS.ITEM.PARAMETER_TYPE.ITEM.Object=Object
SET_PREPAREDSTATEMENT_PARAMETERS.ITEM.PARAMETER_TYPE.ITEM.Short=Short
SET_PREPAREDSTATEMENT_PARAMETERS.ITEM.PARAMETER_TYPE.ITEM.String=String
SET_PREPAREDSTATEMENT_PARAMETERS.ITEM.PARAMETER_TYPE.ITEM.NString=NString
SET_PREPAREDSTATEMENT_PARAMETERS.ITEM.PARAMETER_TYPE.ITEM.Time=Time
SET_PREPAREDSTATEMENT_PARAMETERS.ITEM.PARAMETER_TYPE.ITEM.Null=Null
SET_PREPAREDSTATEMENT_PARAMETERS.ITEM.PARAMETER_VALUE=Parameter Value
@@ -61,4 +62,6 @@ DATASOURCE_ALIAS.NAME=Data source alias
DRIVER.NAME=JDBC Provider
DRIVER.ITEM.JTDS=Open source JTDS
DRIVER.ITEM.MSSQL_PROP=Microsoft
DRIVER.ITEM.MSSQL_PROP=Microsoft
ACTIVE_DIR_AUTH.NAME=Authenticate using Azure Active Directory

View File

@@ -72,6 +72,7 @@ if(inputSchema != null && inputSchema.size() > 0 && outputSchema != null && outp
List<Column> insertionColumnList = getInsertionColumnList(scdConfiger);
String surrogateKeyField = scdConfiger.getSurrogateKeyField();
boolean dieOnError = "true".equals(ElementParameterParser.getValue(node, "__DIE_ON_ERROR__"));
boolean useActiveDirectoryAuth = "true".equals(ElementParameterParser.getValue(node, "__ACTIVE_DIR_AUTH__"));
int schemaOptNum=100;
String schemaOptNumStr=ElementParameterParser.getValue(node, "__SCHEMA_OPT_NUM__");

View File

@@ -505,6 +505,10 @@
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="ACTIVE_DIR_AUTH" FIELD="CHECK" NUM_ROW="36" SHOW_IF="(DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER NAME="SCHEMA_OPT_NUM" FIELD="TEXT" NUM_ROW="90"
REQUIRED="true" SHOW="false">
<DEFAULT>100</DEFAULT>
@@ -513,9 +517,17 @@
<CODEGENERATION>
<IMPORTS>
<IMPORT NAME="Driver-jTDS" MODULE="jtds-1.3.1-patch-20190523.jar" MVN="mvn:net.sourceforge.jtds/jtds/1.3.1-patch-20190523" REQUIRED_IF="(DRIVER == 'JTDS') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="(DRIVER == 'MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Talend_MssqlUtil" MODULE="talend_DB_mssqlUtil-1.4.jar" MVN="mvn:org.talend.components.lib/talend_DB_mssqlUtil/1.4" UrlPath="platform:/plugin/org.talend.libraries.custom/lib/talend_DB_mssqlUtil-1.4.jar" REQUIRED="true" />
<IMPORT NAME="Driver-jTDS" MODULE="jtds-1.3.1-patch-20190523.jar" MVN="mvn:net.sourceforge.jtds/jtds/1.3.1-patch-20190523" REQUIRED_IF="(DRIVER == 'JTDS') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="(DRIVER == 'MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Talend_MssqlUtil" MODULE="talend_DB_mssqlUtil-1.4.jar" MVN="mvn:org.talend.components.lib/talend_DB_mssqlUtil/1.4" UrlPath="platform:/plugin/org.talend.libraries.custom/lib/talend_DB_mssqlUtil-1.4.jar" REQUIRED="true" />
<IMPORT NAME="adal4j" MODULE="adal4j-1.6.5.jar" MVN="mvn:com.microsoft.azure/adal4j/1.6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-lang3" MODULE="commons-lang3-3.10.jar" MVN="mvn:org.apache.commons/commons-lang3/3.10" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-codec" MODULE="commons-codec-1.14.jar" MVN="mvn:commons-codec/commons-codec/1.14" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="gson" MODULE="gson-2.8.6.jar" MVN="mvn:com.google.code.gson/gson/2.8.6" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="oauth2-oidc-sdk" MODULE="oauth2-oidc-sdk-6.5.jar" MVN="mvn:com.nimbusds/oauth2-oidc-sdk/6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="json-smart" MODULE="json-smart-2.3.jar" MVN="mvn:net.minidev/json-smart/2.3" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="nimbus-jose-jwt" MODULE="nimbus-jose-jwt-8.11.jar" MVN="mvn:com.nimbusds/nimbus-jose-jwt/8.11" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="javax.mail" MODULE="javax.mail-1.6.2.jar" MVN="mvn:com.sun.mail/javax.mail/1.6.2" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
</IMPORTS>
</CODEGENERATION>

View File

@@ -99,4 +99,6 @@ SCHEMA_OPT_NUM.NAME=Min column number of optimize code
DRIVER.NAME=JDBC Provider
DRIVER.ITEM.JTDS=Open source JTDS
DRIVER.ITEM.MSSQL_PROP=Microsoft
DRIVER.ITEM.MSSQL_PROP=Microsoft
ACTIVE_DIR_AUTH.NAME=Authenticate using Azure Active Directory

View File

@@ -23,6 +23,7 @@ String dbuser = ElementParameterParser.getValue(node, "__USER__");
String spName = ElementParameterParser.getValue(node, "__SP_NAME__");
boolean isFunction = ("true").equals(ElementParameterParser.getValue(node, "__IS_FUNCTION__"));
boolean useActiveDirectoryAuth = "true".equals(ElementParameterParser.getValue(node, "__ACTIVE_DIR_AUTH__"));
List<Map<String, String>> spArgs = (List<Map<String,String>>) ElementParameterParser.getObjectValue(node, "__SP_ARGS__");
%>

View File

@@ -241,6 +241,10 @@
<DEFAULT>""</DEFAULT>
</PARAMETER>
<PARAMETER NAME="ACTIVE_DIR_AUTH" FIELD="CHECK" NUM_ROW="6" SHOW_IF="(DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')">
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER
NAME="ENCODING"
FIELD="ENCODING_TYPE"
@@ -254,8 +258,16 @@
<CODEGENERATION>
<IMPORTS>
<IMPORT NAME="Driver-jTDS" MODULE="jtds-1.3.1-patch-20190523.jar" MVN="mvn:net.sourceforge.jtds/jtds/1.3.1-patch-20190523" REQUIRED_IF="(DRIVER == 'JTDS') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="(DRIVER == 'MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Driver-jTDS" MODULE="jtds-1.3.1-patch-20190523.jar" MVN="mvn:net.sourceforge.jtds/jtds/1.3.1-patch-20190523" REQUIRED_IF="(DRIVER == 'JTDS') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="Driver-mssql-jdbc" MODULE="mssql-jdbc.jar" MVN="mvn:org.talend.libraries/mssql-jdbc/6.0.0" REQUIRED_IF="(DRIVER == 'MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="adal4j" MODULE="adal4j-1.6.5.jar" MVN="mvn:com.microsoft.azure/adal4j/1.6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-lang3" MODULE="commons-lang3-3.10.jar" MVN="mvn:org.apache.commons/commons-lang3/3.10" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="commons-codec" MODULE="commons-codec-1.14.jar" MVN="mvn:commons-codec/commons-codec/1.14" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="gson" MODULE="gson-2.8.6.jar" MVN="mvn:com.google.code.gson/gson/2.8.6" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="oauth2-oidc-sdk" MODULE="oauth2-oidc-sdk-6.5.jar" MVN="mvn:com.nimbusds/oauth2-oidc-sdk/6.5" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="json-smart" MODULE="json-smart-2.3.jar" MVN="mvn:net.minidev/json-smart/2.3" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="nimbus-jose-jwt" MODULE="nimbus-jose-jwt-8.11.jar" MVN="mvn:com.nimbusds/nimbus-jose-jwt/8.11" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
<IMPORT NAME="javax.mail" MODULE="javax.mail-1.6.2.jar" MVN="mvn:com.sun.mail/javax.mail/1.6.2" REQUIRED_IF="(ACTIVE_DIR_AUTH == 'true') AND (DRIVER=='MSSQL_PROP') AND (USE_EXISTING_CONNECTION == 'false')" />
</IMPORTS>
</CODEGENERATION>

View File

@@ -35,4 +35,6 @@ DATASOURCE_ALIAS.NAME=Data source alias
DRIVER.NAME=JDBC Provider
DRIVER.ITEM.JTDS=Open source JTDS
DRIVER.ITEM.MSSQL_PROP=Microsoft
DRIVER.ITEM.MSSQL_PROP=Microsoft
ACTIVE_DIR_AUTH.NAME=Authenticate using Azure Active Directory

View File

@@ -1 +0,0 @@
DBNAME.NAME=\u0642\u0627\u0639\u062F\u0629 \u0628\u064A\u0627\u0646\u0627\u062A

View File

@@ -1,5 +0,0 @@
DB_SCHEMA.NAME=Schema
PARTITION_COLUMN_NAME_RANGE.NAME=Bereich
SCHEMA_FLOW.NAME=Schema
USER.NAME=Benutzername
USE_TYPE_DEFAULT.ITEM.FALSE=Falsch

View File

@@ -1 +0,0 @@
PARTITION_COLUMN_NAME_RANGE.NAME=\u0395\u03CD\u03C1\u03BF\u03C2

View File

@@ -1,96 +0,0 @@
ACCOUNT_NAME.NAME=Account Name
AZURE_CONNECTION.NAME=Azure Storage Connection
AZURE_LOCATION.NAME=Azure Storage Location
AZURE_STORAGE.ITEM.ADLS=Data Lake Store
AZURE_STORAGE.ITEM.BLOB=Blob Storage
AZURE_STORAGE.NAME=Azure Storage
CLIENT_ID.NAME=Client Id
COMPRESS.NAME=Compressed by
COMPRESSION_ORC.ITEM.DEFAULT=Default
COMPRESSION_ORC.ITEM.SNAPPY=Snappy
COMPRESSION_PARQUET.ITEM.GZIP=GZip
COMPRESSION_PARQUET.ITEM.SNAPPY=Snappy
COMPRESSION_RC.ITEM.DEFAULT=Default
COMPRESSION_TEXT.ITEM.DEFAULT=Default
COMPRESSION_TEXT.ITEM.GZIP=GZip
CONNECTION.NAME=Component List
CONTAINER.NAME=Container
DATE_FORMAT.ITEM.NONE=None
DATE_FORMAT.ITEM.PATTERN=Pattern
DATE_FORMAT.NAME=Date format
DBNAME.NAME=Database
DBTABLE.NAME=Table Name
DB_CONFIG.NAME=Database settings
DB_SCHEMA.NAME=Schema
DIE_ON_ERROR.NAME=Die on error
DISTRIBUTION.ITEM.HASH=Hash
DISTRIBUTION.ITEM.REPLICATE=Replicate
DISTRIBUTION.ITEM.ROUND_ROBIN=Round Robin
DISTRIBUTION.NAME=Distribution Option
DISTRIBUTION_COLUMN_NAME.NAME=Distribution Column Name
DRIVER.NAME=JDBC Provider
DRIVER.ITEM.MSSQL_PROP=Microsoft
DW_TABLE_PROPERTIES.NAME=Data Warehouse Table Properties
ENDPOINT.NAME=OAuth 2.0 token endpoint
EXT_TABLE_OPTIONS.NAME=Data import reject options
FIELDSEPARATOR.NAME=Field separator
FILENAME.NAME=Filepath at local
HELP=org.talend.help.tSQLDWHBulkExec
HOST.NAME=Host
IMPORT_TYPE.ITEM.DELIMITED_TEXT=Delimited Text
IMPORT_TYPE.ITEM.HIVE_ORC=Hive ORC
IMPORT_TYPE.ITEM.HIVE_RCFILE=Hive RCFile
IMPORT_TYPE.ITEM.PARQUET=Parquet
IMPORT_TYPE.NAME=File format
INDEX_COLUMNS.NAME=Index column(s)
LOAD_DETAILS.NAME=Load Parameters
LONG_NAME=Load data into Azure Data Warehouse with PolyBase
MAPPING.NAME=Mapping
NB_LINE_INSERTED.NAME=Number of lines inserted
PARTITION.NAME=Partition
PARTITION_COLUMN_NAME.NAME=Partition column name
PARTITION_COLUMN_NAME_RANGE.ITEM.LEFT=Left
PARTITION_COLUMN_NAME_RANGE.ITEM.RIGHT=Right
PARTITION_COLUMN_NAME_RANGE.NAME=Range
PARTITION_VALUES.NAME=Partition For Values
PASS.NAME=Password
PORT.NAME=Port
PRINCIPAL_KEY.NAME=Authentication key
PROPERTIES.NAME=Additional JDBC Parameters
PROPERTY.NAME=Property Type
QUERY.NAME=Query
REJECT.LINK=Rejects
REJECT.MENU=Rejects
REJECT_SAMPLE_VALUE.NAME=Reject sample value
REJECT_TYPE.ITEM.Percentage=Percentage
REJECT_TYPE.ITEM.Value=Value
REJECT_TYPE.NAME=Reject type
REJECT_VALUE.NAME=Reject value
ROWSEPARATOR.NAME=Row separator
SCHEMA_FLOW.NAME=Schema
SECRET_KEY.NAME=Access key
SERDE_METHOD.ITEM.COLUMNAR=Columnar
SERDE_METHOD.ITEM.LAZY=Lazy Binary
SERDE_METHOD.NAME=Serde Method
SQL_SYNTAX.NAME=Sql Syntax
STRING_QUOTE.NAME=String Quote
TABLE.NAME=Table
TABLE_ACTION.ITEM.CLEAR=Clear table
TABLE_ACTION.ITEM.CREATE=Create table
TABLE_ACTION.ITEM.CREATE_IF_NOT_EXISTS=Create table if not exists
TABLE_ACTION.ITEM.DROP_CREATE=Drop and create table
TABLE_ACTION.ITEM.DROP_IF_EXISTS_AND_CREATE=Drop table if exists and create
TABLE_ACTION.ITEM.NONE=None
TABLE_ACTION.ITEM.TRUNCATE=Truncate table
TABLE_ACTION.NAME=Action on table
TABLE_OPTION.ITEM.CLUSTERED_COLUMNSTORE_INDEX=Clustered Columnstore Index
TABLE_OPTION.ITEM.CLUSTERED_INDEX=Clustered Index
TABLE_OPTION.ITEM.HEAP=Heap
TABLE_OPTION.NAME=Table Option
TYPE.NAME=Database Driver
USER.NAME=Username
USE_EXISTING_CONNECTION.NAME=Use an existing connection
USE_STRING_DELIMITER.NAME=Enclosed by
USE_TYPE_DEFAULT.ITEM.FALSE=False
USE_TYPE_DEFAULT.ITEM.TRUE=True
USE_TYPE_DEFAULT.NAME=Use type default

View File

@@ -1,29 +0,0 @@
ACCOUNT_NAME.NAME=Nom du compte
AZURE_CONNECTION.NAME=Connexion \u00E0 Azure Storage
AZURE_LOCATION.NAME=Emplacement d'Azure Storage
AZURE_STORAGE.ITEM.ADLS=Data Lake Store
AZURE_STORAGE.ITEM.BLOB=Stockage Blob
AZURE_STORAGE.NAME=Stockage Azure
CLIENT_ID.NAME=ID client
COMPRESSION_ORC.ITEM.SNAPPY=Snappy
COMPRESSION_PARQUET.ITEM.GZIP=GZip
COMPRESSION_PARQUET.ITEM.SNAPPY=Snappy
COMPRESSION_TEXT.ITEM.GZIP=GZip
CONNECTION.NAME=Liste des composants
DATE_FORMAT.NAME=Format de date
DBNAME.NAME=Base de donn\u00E9es
DIE_ON_ERROR.NAME=Arr\u00EAter en cas d'erreur
DRIVER.NAME=Fournisseur JDBC
DRIVER.ITEM.MSSQL_PROP=Microsoft
ENDPOINT.NAME=Endpoint du jeton OAuth 2.0
FIELDSEPARATOR.NAME=S\u00E9parateur de champs
HOST.NAME=H\u00F4te
IMPORT_TYPE.ITEM.DELIMITED_TEXT=Texte d\u00E9limit\u00E9
IMPORT_TYPE.ITEM.HIVE_ORC=Hive ORC
IMPORT_TYPE.ITEM.PARQUET=Parquet
IMPORT_TYPE.NAME=Format de fichier
PASS.NAME=Mot de passe
PORT.NAME=Port
REJECT_TYPE.ITEM.Value=Valeur
SECRET_KEY.NAME=Cl\u00E9 d'acc\u00E8s
USER.NAME=Utilisateur

View File

@@ -1,96 +0,0 @@
ACCOUNT_NAME.NAME=\u30A2\u30AB\u30A6\u30F3\u30C8\u540D
AZURE_CONNECTION.NAME=Azure\u30B9\u30C8\u30EC\u30FC\u30B8\u63A5\u7D9A
AZURE_LOCATION.NAME=Azure\u30B9\u30C8\u30EC\u30FC\u30B8\u30ED\u30B1\u30FC\u30B7\u30E7\u30F3
AZURE_STORAGE.ITEM.ADLS=Data Lake Store
AZURE_STORAGE.ITEM.BLOB=Blob\u30B9\u30C8\u30EC\u30FC\u30B8
AZURE_STORAGE.NAME=Azure\u30B9\u30C8\u30EC\u30FC\u30B8
CLIENT_ID.NAME=\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8ID
COMPRESS.NAME=\u5727\u7E2E\u65B9\u5F0F
COMPRESSION_ORC.ITEM.DEFAULT=\u30C7\u30D5\u30A9\u30EB\u30C8
COMPRESSION_ORC.ITEM.SNAPPY=Snappy
COMPRESSION_PARQUET.ITEM.GZIP=GZip
COMPRESSION_PARQUET.ITEM.SNAPPY=Snappy
COMPRESSION_RC.ITEM.DEFAULT=\u30C7\u30D5\u30A9\u30EB\u30C8
COMPRESSION_TEXT.ITEM.DEFAULT=\u30C7\u30D5\u30A9\u30EB\u30C8
COMPRESSION_TEXT.ITEM.GZIP=GZip
CONNECTION.NAME=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u30EA\u30B9\u30C8
CONTAINER.NAME=\u30B3\u30F3\u30C6\u30CA
DATE_FORMAT.ITEM.NONE=\u306A\u3057
DATE_FORMAT.ITEM.PATTERN=\u30D1\u30BF\u30FC\u30F3
DATE_FORMAT.NAME=\u65E5\u4ED8\u306E\u5F62\u5F0F
DBNAME.NAME=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9
DBTABLE.NAME=\u30C6\u30FC\u30D6\u30EB\u540D
DB_CONFIG.NAME=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u8A2D\u5B9A
DB_SCHEMA.NAME=\u30B9\u30AD\u30FC\u30DE
DIE_ON_ERROR.NAME=\u30A8\u30E9\u30FC\u767A\u751F\u6642\u306B\u5F37\u5236\u7D42\u4E86
DISTRIBUTION.ITEM.HASH=\u30CF\u30C3\u30B7\u30E5
DISTRIBUTION.ITEM.REPLICATE=\u8907\u88FD
DISTRIBUTION.ITEM.ROUND_ROBIN=\u30E9\u30A6\u30F3\u30C9\u30ED\u30D3\u30F3
DISTRIBUTION.NAME=\u30C7\u30A3\u30B9\u30C8\u30EA\u30D3\u30E5\u30FC\u30B7\u30E7\u30F3\u30AA\u30D7\u30B7\u30E7\u30F3
DISTRIBUTION_COLUMN_NAME.NAME=\u30C7\u30A3\u30B9\u30C8\u30EA\u30D3\u30E5\u30FC\u30B7\u30E7\u30F3\u30AB\u30E9\u30E0\u540D
DRIVER.NAME=JDBC\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC
DRIVER.ITEM.MSSQL_PROP=Microsoft
DW_TABLE_PROPERTIES.NAME=Data Warehouse\u30C6\u30FC\u30D6\u30EB\u30D7\u30ED\u30D1\u30C6\u30A3
ENDPOINT.NAME=OAuth 2.0\u30C8\u30FC\u30AF\u30F3\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8
EXT_TABLE_OPTIONS.NAME=\u30C7\u30FC\u30BF\u30A4\u30F3\u30DD\u30FC\u30C8\u30EA\u30B8\u30A7\u30AF\u30C8\u30AA\u30D7\u30B7\u30E7\u30F3
FIELDSEPARATOR.NAME=\u5217\u533A\u5207\u308A\u8A18\u53F7
FILENAME.NAME=\u30ED\u30FC\u30AB\u30EB\u306E\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9
HELP=org.talend.help.tSQLDWHBulkExec
HOST.NAME=\u30DB\u30B9\u30C8
IMPORT_TYPE.ITEM.DELIMITED_TEXT=\u533A\u5207\u308A\u8A18\u53F7\u4ED8\u304D\u30C6\u30AD\u30B9\u30C8
IMPORT_TYPE.ITEM.HIVE_ORC=Hive ORC
IMPORT_TYPE.ITEM.HIVE_RCFILE=Hive RCFile
IMPORT_TYPE.ITEM.PARQUET=Parquet
IMPORT_TYPE.NAME=\u30D5\u30A1\u30A4\u30EB\u5F62\u5F0F
INDEX_COLUMNS.NAME=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u30AB\u30E9\u30E0
LOAD_DETAILS.NAME=\u30ED\u30FC\u30C9\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC
LONG_NAME=PolyBase\u3092\u4F7F\u7528\u3057\u3066\u30C7\u30FC\u30BF\u3092Azure Data Warehouse\u306B\u30ED\u30FC\u30C9
MAPPING.NAME=\u30DE\u30C3\u30D4\u30F3\u30B0
NB_LINE_INSERTED.NAME=\u633F\u5165\u884C\u6570
PARTITION.NAME=\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3
PARTITION_COLUMN_NAME.NAME=\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u30AB\u30E9\u30E0\u540D
PARTITION_COLUMN_NAME_RANGE.ITEM.LEFT=\u5DE6
PARTITION_COLUMN_NAME_RANGE.ITEM.RIGHT=\u53F3
PARTITION_COLUMN_NAME_RANGE.NAME=\u7BC4\u56F2
PARTITION_VALUES.NAME=\u5024\u306E\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3
PASS.NAME=\u30D1\u30B9\u30EF\u30FC\u30C9
PORT.NAME=\u30DD\u30FC\u30C8
PRINCIPAL_KEY.NAME=\u8A8D\u8A3C\u30AD\u30FC
PROPERTIES.NAME=\u8FFD\u52A0\u306EJDBC\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC
PROPERTY.NAME=\u30D7\u30ED\u30D1\u30C6\u30A3\u30BF\u30A4\u30D7
QUERY.NAME=\u30AF\u30A8\u30EA
REJECT.LINK=\u30EA\u30B8\u30A7\u30AF\u30C8
REJECT.MENU=\u30EA\u30B8\u30A7\u30AF\u30C8
REJECT_SAMPLE_VALUE.NAME=\u30B5\u30F3\u30D7\u30EB\u5024\u3092\u30EA\u30B8\u30A7\u30AF\u30C8
REJECT_TYPE.ITEM.Percentage=\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8
REJECT_TYPE.ITEM.Value=\u5024
REJECT_TYPE.NAME=\u30EA\u30B8\u30A7\u30AF\u30C8\u30BF\u30A4\u30D7
REJECT_VALUE.NAME=\u5024\u3092\u30EA\u30B8\u30A7\u30AF\u30C8
ROWSEPARATOR.NAME=\u884C\u533A\u5207\u308A
SCHEMA_FLOW.NAME=\u30B9\u30AD\u30FC\u30DE
SECRET_KEY.NAME=\u30A2\u30AF\u30BB\u30B9\u30AD\u30FC
SERDE_METHOD.ITEM.COLUMNAR=\u67F1\u72B6
SERDE_METHOD.ITEM.LAZY=\u30EC\u30A4\u30B8\u30FC\u30D0\u30A4\u30CA\u30EA
SERDE_METHOD.NAME=Serde\u30E1\u30BD\u30C3\u30C9
SQL_SYNTAX.NAME=Sql\u69CB\u6587
STRING_QUOTE.NAME=\u5F15\u7528\u7B26
TABLE.NAME=\u30C6\u30FC\u30D6\u30EB
TABLE_ACTION.ITEM.CLEAR=\u30C6\u30FC\u30D6\u30EB\u306E\u30AF\u30EA\u30A2
TABLE_ACTION.ITEM.CREATE=\u30C6\u30FC\u30D6\u30EB\u306E\u4F5C\u6210
TABLE_ACTION.ITEM.CREATE_IF_NOT_EXISTS=\u5B58\u5728\u3057\u306A\u3044\u5834\u5408\u306F\u30C6\u30FC\u30D6\u30EB\u3092\u4F5C\u6210
TABLE_ACTION.ITEM.DROP_CREATE=\u30C9\u30ED\u30C3\u30D7\u3057\u3066\u30C6\u30FC\u30D6\u30EB\u3092\u4F5C\u6210
TABLE_ACTION.ITEM.DROP_IF_EXISTS_AND_CREATE=\u30C6\u30FC\u30D6\u30EB\u304C\u3042\u308B\u5834\u5408\u306F\u30C6\u30FC\u30D6\u30EB\u3092\u30C9\u30ED\u30C3\u30D7\u3057\u3066\u4F5C\u6210\u3057\u307E\u3059
TABLE_ACTION.ITEM.NONE=\u306A\u3057
TABLE_ACTION.ITEM.TRUNCATE=\u30C6\u30FC\u30D6\u30EB\u3092\u5207\u308A\u8A70\u3081\u308B
TABLE_ACTION.NAME=\u30C6\u30FC\u30D6\u30EB\u3078\u306E\u30A2\u30AF\u30B7\u30E7\u30F3
TABLE_OPTION.ITEM.CLUSTERED_COLUMNSTORE_INDEX=\u30AF\u30E9\u30B9\u30BF\u30FC\u5316\u3055\u308C\u305F\u30AB\u30E9\u30E0\u30B9\u30C8\u30A2\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9
TABLE_OPTION.ITEM.CLUSTERED_INDEX=\u30AF\u30E9\u30B9\u30BF\u30FC\u5316\u3055\u308C\u305F\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9
TABLE_OPTION.ITEM.HEAP=\u30D2\u30FC\u30D7
TABLE_OPTION.NAME=\u30C6\u30FC\u30D6\u30EB\u30AA\u30D7\u30B7\u30E7\u30F3
TYPE.NAME=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C9\u30E9\u30A4\u30D0\u30FC
USER.NAME=\u30E6\u30FC\u30B6\u30FC\u540D
USE_EXISTING_CONNECTION.NAME=\u65E2\u5B58\u306E\u63A5\u7D9A\u3092\u4F7F\u7528
USE_STRING_DELIMITER.NAME=\u5F15\u7528\u7B26
USE_TYPE_DEFAULT.ITEM.FALSE=False
USE_TYPE_DEFAULT.ITEM.TRUE=True
USE_TYPE_DEFAULT.NAME=\u30BF\u30A4\u30D7\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u4F7F\u7528

View File

@@ -1,2 +0,0 @@
DB_SCHEMA.NAME=\u015Eema
SCHEMA_FLOW.NAME=\u015Eema

View File

@@ -1,96 +0,0 @@
ACCOUNT_NAME.NAME=\u5E10\u6237\u540D\u79F0
AZURE_CONNECTION.NAME=Azure \u5B58\u50A8\u8FDE\u63A5
AZURE_LOCATION.NAME=Azure \u5B58\u50A8\u4F4D\u7F6E
AZURE_STORAGE.ITEM.ADLS=Data Lake Store
AZURE_STORAGE.ITEM.BLOB=Blob \u5B58\u50A8
AZURE_STORAGE.NAME=Azure \u5B58\u50A8
CLIENT_ID.NAME=\u5BA2\u6237\u7AEF Id
COMPRESS.NAME=\u538B\u7F29\u7C7B\u578B
COMPRESSION_ORC.ITEM.DEFAULT=\u9ED8\u8BA4
COMPRESSION_ORC.ITEM.SNAPPY=snappy
COMPRESSION_PARQUET.ITEM.GZIP=GZIP
COMPRESSION_PARQUET.ITEM.SNAPPY=snappy
COMPRESSION_RC.ITEM.DEFAULT=\u9ED8\u8BA4
COMPRESSION_TEXT.ITEM.DEFAULT=\u9ED8\u8BA4
COMPRESSION_TEXT.ITEM.GZIP=GZIP
CONNECTION.NAME=\u7EC4\u4EF6\u5217\u8868
CONTAINER.NAME=\u5BB9\u5668
DATE_FORMAT.ITEM.NONE=\u65E0
DATE_FORMAT.ITEM.PATTERN=\u6A21\u5F0F
DATE_FORMAT.NAME=\u65E5\u671F\u683C\u5F0F
DBNAME.NAME=\u6570\u636E\u5E93
DBTABLE.NAME=\u8868\u540D\u79F0
DB_CONFIG.NAME=\u6570\u636E\u5E93\u8BBE\u7F6E
DB_SCHEMA.NAME=Schema
DIE_ON_ERROR.NAME=\u9519\u8BEF\u65F6\u7EC8\u6B62
DISTRIBUTION.ITEM.HASH=\u54C8\u5E0C
DISTRIBUTION.ITEM.REPLICATE=\u590D\u5236
DISTRIBUTION.ITEM.ROUND_ROBIN=\u8F6E\u8F6C
DISTRIBUTION.NAME=\u5206\u914D\u9009\u9879
DISTRIBUTION_COLUMN_NAME.NAME=\u5206\u914D\u5217\u540D\u79F0
DRIVER.NAME=JDBC \u63D0\u4F9B\u7A0B\u5E8F
DRIVER.ITEM.MSSQL_PROP=Microsoft
DW_TABLE_PROPERTIES.NAME=\u6570\u636E\u4ED3\u5E93\u8868\u5C5E\u6027
ENDPOINT.NAME=OAuth 2.0 \u4EE4\u724C\u7AEF\u70B9
EXT_TABLE_OPTIONS.NAME=\u6570\u636E\u5BFC\u5165\u62D2\u7EDD\u9009\u9879
FIELDSEPARATOR.NAME=\u5B57\u6BB5\u5206\u9694\u7B26
FILENAME.NAME=\u672C\u5730\u6587\u4EF6\u8DEF\u5F84
HELP=org.talend.help.tSQLDWHBulkExec
HOST.NAME=\u4E3B\u673A
IMPORT_TYPE.ITEM.DELIMITED_TEXT=\u5206\u9694\u6587\u672C
IMPORT_TYPE.ITEM.HIVE_ORC=Hive ORC
IMPORT_TYPE.ITEM.HIVE_RCFILE=Hive RCFile
IMPORT_TYPE.ITEM.PARQUET=Parquet
IMPORT_TYPE.NAME=\u6587\u4EF6\u683C\u5F0F
INDEX_COLUMNS.NAME=\u7D22\u5F15\u5217
LOAD_DETAILS.NAME=\u52A0\u8F7D\u53C2\u6570
LONG_NAME=\u4F7F\u7528 PolyBase \u5C06\u6570\u636E\u52A0\u8F7D\u5230 Azure \u6570\u636E\u4ED3\u5E93\u4E2D
MAPPING.NAME=\u6620\u5C04
NB_LINE_INSERTED.NAME=\u63D2\u5165\u884C\u6570
PARTITION.NAME=\u5206\u533A
PARTITION_COLUMN_NAME.NAME=\u5206\u533A\u5217\u540D\u79F0
PARTITION_COLUMN_NAME_RANGE.ITEM.LEFT=\u5DE6
PARTITION_COLUMN_NAME_RANGE.ITEM.RIGHT=\u53F3
PARTITION_COLUMN_NAME_RANGE.NAME=\u8303\u56F4
PARTITION_VALUES.NAME=\u503C\u5206\u533A
PASS.NAME=\u5BC6\u7801
PORT.NAME=\u7AEF\u53E3
PRINCIPAL_KEY.NAME=\u8EAB\u4EFD\u9A8C\u8BC1\u5BC6\u94A5
PROPERTIES.NAME=\u9644\u52A0 JDBC \u53C2\u6570
PROPERTY.NAME=\u5C5E\u6027\u7C7B\u578B
QUERY.NAME=\u67E5\u8BE2
REJECT.LINK=\u62D2\u7EDD
REJECT.MENU=\u62D2\u7EDD
REJECT_SAMPLE_VALUE.NAME=\u62D2\u7EDD\u793A\u4F8B\u503C
REJECT_TYPE.ITEM.Percentage=\u767E\u5206\u6BD4
REJECT_TYPE.ITEM.Value=\u503C
REJECT_TYPE.NAME=\u62D2\u7EDD\u7C7B\u578B
REJECT_VALUE.NAME=\u62D2\u7EDD\u503C
ROWSEPARATOR.NAME=\u884C\u5206\u9694\u7B26
SCHEMA_FLOW.NAME=Schema
SECRET_KEY.NAME=\u8BBF\u95EE\u5BC6\u94A5
SERDE_METHOD.ITEM.COLUMNAR=\u5206\u680F\u5F0F
SERDE_METHOD.ITEM.LAZY=\u60F0\u6027\u4E8C\u8FDB\u5236
SERDE_METHOD.NAME=Serde \u65B9\u6CD5
SQL_SYNTAX.NAME=Sql \u8BED\u6CD5
STRING_QUOTE.NAME=\u5B57\u7B26\u4E32\u5F15\u7528
TABLE.NAME=\u8868
TABLE_ACTION.ITEM.CLEAR=\u6E05\u9664\u8868
TABLE_ACTION.ITEM.CREATE=\u521B\u5EFA\u8868
TABLE_ACTION.ITEM.CREATE_IF_NOT_EXISTS=\u5982\u679C\u8868\u4E0D\u5B58\u5728\u5219\u521B\u5EFA\u8868
TABLE_ACTION.ITEM.DROP_CREATE=\u5220\u9664\u5E76\u521B\u5EFA\u8868
TABLE_ACTION.ITEM.DROP_IF_EXISTS_AND_CREATE=\u5982\u679C\u8868\u5B58\u5728\uFF0C\u5219\u5148\u5220\u9664\u518D\u521B\u5EFA
TABLE_ACTION.ITEM.NONE=\u65E0
TABLE_ACTION.ITEM.TRUNCATE=\u622A\u65AD\u8868
TABLE_ACTION.NAME=\u8868\u64CD\u4F5C
TABLE_OPTION.ITEM.CLUSTERED_COLUMNSTORE_INDEX=\u96C6\u7FA4\u5217\u5B58\u50A8\u7D22\u5F15
TABLE_OPTION.ITEM.CLUSTERED_INDEX=\u96C6\u7FA4\u7D22\u5F15
TABLE_OPTION.ITEM.HEAP=\u5806
TABLE_OPTION.NAME=\u8868\u9009\u9879
TYPE.NAME=\u6570\u636E\u5E93\u9A71\u52A8
USER.NAME=\u7528\u6237\u540D
USE_EXISTING_CONNECTION.NAME=\u4F7F\u7528\u4E00\u4E2A\u73B0\u6709\u8FDE\u63A5
USE_STRING_DELIMITER.NAME=\u56F4\u680F
USE_TYPE_DEFAULT.ITEM.FALSE=False
USE_TYPE_DEFAULT.ITEM.TRUE=True
USE_TYPE_DEFAULT.NAME=\u4F7F\u7528\u7C7B\u578B\u9ED8\u8BA4\u503C

View File

@@ -1,3 +0,0 @@
HELP=org.talend.help.tSQLDWHClose
LONG_NAME=Close a selected MSSql connection.
CONNECTION.NAME=Component List

View File

@@ -1,2 +0,0 @@
LONG_NAME=Ferme une connexion \u00E0 MSSql s\u00E9lectionn\u00E9e
CONNECTION.NAME=Liste de composants

View File

@@ -1,3 +0,0 @@
HELP=org.talend.help.tSQLDWHClose
LONG_NAME=\u9078\u629E\u3057\u305FMSSql\u63A5\u7D9A\u3092\u9589\u3058\u307E\u3059\u3002
CONNECTION.NAME=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u30EA\u30B9\u30C8

View File

@@ -1,3 +0,0 @@
HELP=org.talend.help.tSQLDWHClose
LONG_NAME=\u5173\u95ED\u9009\u5B9A\u7684 MSSql \u8FDE\u63A5\u3002
CONNECTION.NAME=\u7EC4\u4EF6\u5217\u8868

View File

@@ -1,4 +0,0 @@
HELP=org.talend.help.tSQLDWHCommit
LONG_NAME=Commits all transactions not already commited in a selected MSSql connection
CLOSE.NAME=Close Connection
CONNECTION.NAME=Component List

View File

@@ -1,3 +0,0 @@
LONG_NAME=Commite toutes les transactions non commit\u00E9es dans une connexion MSSql s\u00E9lectionn\u00E9e
CLOSE.NAME=Fermer la connexion
CONNECTION.NAME=Liste de composants

View File

@@ -1,4 +0,0 @@
HELP=org.talend.help.tSQLDWHCommit
LONG_NAME=\u9078\u629E\u3057\u305FMSSql\u63A5\u7D9A\u5185\u306B\u307E\u3060\u30B3\u30DF\u30C3\u30C8\u3057\u3066\u3044\u306A\u3044\u3059\u3079\u3066\u306E\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u3092\u30B3\u30DF\u30C3\u30C8
CLOSE.NAME=\u63A5\u7D9A\u3092\u9589\u3058\u308B
CONNECTION.NAME=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u30EA\u30B9\u30C8

View File

@@ -1,4 +0,0 @@
HELP=org.talend.help.tSQLDWHCommit
LONG_NAME=\u63D0\u4EA4\u9009\u5B9A\u7684 MSSql \u8FDE\u63A5\u4E2D\u5C1A\u672A\u63D0\u4EA4\u7684\u6240\u6709\u4E8B\u52A1
CLOSE.NAME=\u5173\u95ED\u8FDE\u63A5
CONNECTION.NAME=\u7EC4\u4EF6\u5217\u8868

View File

@@ -1,71 +0,0 @@
<%@ jet
imports="
org.talend.core.model.process.INode
org.talend.core.model.process.ElementParameterParser
org.talend.designer.codegen.config.CodeGeneratorArgument
"
%>
<%@ include file="../templates/DB/HelpClass/HelpClass.javajet"%>
<%
class ConnectionUtil extends DefaultConnectionUtil{
public void createURL(INode node) {
super.createURL(node);
String driver = ElementParameterParser.getValue(node, "__DRIVER__");
%>
<%
if(driver.equals("JTDS")) {
%>
String url_<%=cid %> = "jdbc:jtds:sqlserver://" + <%=dbhost%> ;
<%
} else {
%>
String url_<%=cid %> = "jdbc:sqlserver://" + <%=dbhost%> ;
<%
}
%>
String port_<%=cid%> = <%=dbport%>;
String dbname_<%=cid%> = <%=dbname%> ;
if (!"".equals(port_<%=cid%>)) {
url_<%=cid %> += ":" + <%=dbport%>;
}
if (!"".equals(dbname_<%=cid%>)) {
<%
if(driver.equals("JTDS")) {
%>
url_<%=cid%> += "//" + <%=dbname%>;
<%
} else {
%>
url_<%=cid%> += ";databaseName=" + <%=dbname%>;
<%
}
%>
}
url_<%=cid%> += ";applicationName=Talend;" + <%=dbproperties%>;
<%
}
public String getDirverClassName(INode node){
String driver = ElementParameterParser.getValue(node, "__DRIVER__");
if(driver.equals("JTDS")) {
return "net.sourceforge.jtds.jdbc.Driver";
}
return "com.microsoft.sqlserver.jdbc.SQLServerDriver";
}
}//end class
connUtil = new ConnectionUtil();
%>
<%//----------------------------component codes-----------------------------------------%>
<%@ include file="../templates/DB/AbstractDBConnection.javajet"%>
globalMap.put("dbschema_<%=cid%>", <%=dbschema%>);
globalMap.put("db_<%=cid%>", <%=dbname%>);
globalMap.put("conn_<%=cid%>",conn_<%=cid%>);
globalMap.put("shareIdentitySetting_<%=cid%>", <%=ElementParameterParser.getValue(node, "__SHARE_IDENTITY_SETTING__")%>);

View File

@@ -1 +0,0 @@
DBNAME.NAME=\u0642\u0627\u0639\u062F\u0629 \u0628\u064A\u0627\u0646\u0627\u062A

Some files were not shown because too many files have changed in this diff Show More