提交 bc78206d 编写于 作者: A Anastasiya Volkova

#1233 "Replace into" insert keyword to export options added


Former-commit-id: ecb4781b
上级 378cdd5a
......@@ -172,7 +172,7 @@
<propertyGroup label="%dataTransfer.processor.sql.propertyGroup.formatting.label">
<property id="lineBeforeRows" label="%dataTransfer.processor.sql.property.lineBeforeRows.name" type="boolean" description="%dataTransfer.processor.sql.property.lineBeforeRows.description" defaultValue="true" />
<property id="keywordCase" label="%dataTransfer.processor.sql.property.keywordCase.name" type="string" description="%dataTransfer.processor.sql.property.keywordCase.description" defaultValue="upper" required="true" validValues="upper,lower"/>
<property id="upsertKeyword" label="%dataTransfer.processor.sql.property.upsertKeyword.name" type="string" description="%dataTransfer.processor.sql.property.upsertKeyword.description" defaultValue="INSERT" required="true" validValues="INSERT,UPDATE OR,UPSERT INTO,ON DUPLICATE KEY UPDATE,ON CONFLICT"/>
<property id="upsertKeyword" label="%dataTransfer.processor.sql.property.upsertKeyword.name" type="string" description="%dataTransfer.processor.sql.property.upsertKeyword.description" defaultValue="INSERT" required="true" validValues="INSERT,UPDATE OR,UPSERT INTO,REPLACE INTO,ON DUPLICATE KEY UPDATE,ON CONFLICT"/>
<property id="insertOnConflict" label="%dataTransfer.processor.sql.property.insertOnConflict.name" type="string" description="%dataTransfer.processor.sql.property.insertOnConflict.description" defaultValue="" required="true"/>
</propertyGroup>
</processor>
......
......@@ -73,7 +73,8 @@ public class DataExporterSQL extends StreamExporterAbstract {
private final String KEYWORD_INSERT_ALL = "INSERT ALL";
private final String KEYWORD_SELECT_FROM_DUAL = "SELECT 1 FROM DUAL";
private final static String KEYWORD_UPDATE_OR = "UPDATE OR";
private final static String KEYWORD_UPSERT = "UPSERT INTO";
private final static String KEYWORD_UPSERT_INTO = "UPSERT INTO";
private final static String KEYWORD_REPLACE_INTO = "REPLACE INTO";
private final static String KEYWORD_DUPLICATE_KEY = "ON DUPLICATE KEY UPDATE";
private final static String KEYWORD_ON_CONFLICT = "ON CONFLICT";
......@@ -87,7 +88,8 @@ public class DataExporterSQL extends StreamExporterAbstract {
enum InsertKeyword {
INSERT("INSERT"),
UPDATE(KEYWORD_UPDATE_OR),
UPSERT(KEYWORD_UPSERT),
UPSERT(KEYWORD_UPSERT_INTO),
REPLACE(KEYWORD_REPLACE_INTO),
ON_DUPLICATE(KEYWORD_DUPLICATE_KEY),
ON_CONFLICT(KEYWORD_ON_CONFLICT);
private String value;
......@@ -196,18 +198,25 @@ public class DataExporterSQL extends StreamExporterAbstract {
sqlBuffer.append(rowDelimiter);
}
}
if (insertKeyword == InsertKeyword.UPDATE) {
sqlBuffer.append(identifierCase.transform(KEYWORD_UPDATE_OR)).append(" ");
}
if (insertKeyword == InsertKeyword.UPSERT) {
sqlBuffer.append(identifierCase.transform(KEYWORD_UPSERT));
} else if (insertMode == SQLDialect.MultiValueInsertMode.INSERT_ALL) {
if (rowCount % rowsInStatement == 0) {
sqlBuffer.append(identifierCase.transform(KEYWORD_INSERT_ALL)).append("\n");
}
sqlBuffer.append("\t").append(identifierCase.transform(KEYWORD_INTO));
} else {
sqlBuffer.append(identifierCase.transform(KEYWORD_INSERT_INTO));
switch (insertKeyword) {
case UPDATE:
sqlBuffer.append(identifierCase.transform(KEYWORD_UPDATE_OR)).append(" ").append(identifierCase.transform(KEYWORD_INSERT_INTO));
break;
case UPSERT:
sqlBuffer.append(identifierCase.transform(KEYWORD_UPSERT_INTO));
break;
case REPLACE:
sqlBuffer.append(identifierCase.transform(KEYWORD_REPLACE_INTO));
break;
default:
if (insertMode == SQLDialect.MultiValueInsertMode.INSERT_ALL) {
if (rowCount % rowsInStatement == 0) {
sqlBuffer.append(identifierCase.transform(KEYWORD_INSERT_ALL)).append("\n");
}
sqlBuffer.append("\t").append(identifierCase.transform(KEYWORD_INTO));
} else {
sqlBuffer.append(identifierCase.transform(KEYWORD_INSERT_INTO));
}
}
sqlBuffer.append(" ").append(tableName).append(" (");
boolean hasColumn = false;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册