提交 32b2417b 编写于 作者: S Serge Rider 提交者: GitHub

Merge pull request #9909 from dbeaver/dataexport#9696

#9696 Export SQL INSERT

Former-commit-id: b9d7b492
...@@ -76,6 +76,12 @@ dataTransfer.processor.sql.property.rowsInStatement.name=Data rows per statement ...@@ -76,6 +76,12 @@ dataTransfer.processor.sql.property.rowsInStatement.name=Data rows per statement
dataTransfer.processor.sql.property.rowsInStatement.description=Number of data rows per single insert statement dataTransfer.processor.sql.property.rowsInStatement.description=Number of data rows per single insert statement
dataTransfer.processor.sql.property.nativeFormat.name=Native date/time format dataTransfer.processor.sql.property.nativeFormat.name=Native date/time format
dataTransfer.processor.sql.property.nativeFormat.description=Use native date/time format in INSERT statements dataTransfer.processor.sql.property.nativeFormat.description=Use native date/time format in INSERT statements
dataTransfer.processor.sql.property.lineBeforeValues.name = Insert line before VALUES
dataTransfer.processor.sql.property.lineBeforeValues.description = Insert line feeds before keyword VALUES (for single-row inserts)
dataTransfer.processor.sql.property.lineBeforeRows.name = Insert line before rows
dataTransfer.processor.sql.property.lineBeforeRows.description = Insert line feeds before each values row (for multi-row inserts)
dataTransfer.processor.sql.property.keywordCase.name = Keyword case
dataTransfer.processor.sql.property.keywordCase.description = You can choose lower or upper keyword case
dataTransfer.processor.xml.name=XML dataTransfer.processor.xml.name=XML
dataTransfer.processor.xml.description=Export to XML file(s) dataTransfer.processor.xml.description=Export to XML file(s)
dataTransfer.processor.xml.propertyGroup.general.label = General dataTransfer.processor.xml.propertyGroup.general.label = General
......
...@@ -66,6 +66,15 @@ dataTransfer.processor.sql.property.omitSchema.name ...@@ -66,6 +66,15 @@ dataTransfer.processor.sql.property.omitSchema.name
dataTransfer.processor.sql.property.rowsInStatement.description = Anzahl der Datenzeilen pro einzelner INSERT-Anweisung dataTransfer.processor.sql.property.rowsInStatement.description = Anzahl der Datenzeilen pro einzelner INSERT-Anweisung
dataTransfer.processor.sql.property.rowsInStatement.name = Datenzeilen pro Statement dataTransfer.processor.sql.property.rowsInStatement.name = Datenzeilen pro Statement
dataTransfer.processor.sql.propertyGroup.general.label = Allgemein dataTransfer.processor.sql.propertyGroup.general.label = Allgemein
dataTransfer.processor.sql.property.nativeFormat.name = Natives Datums-/Uhrzeitformat
dataTransfer.processor.sql.property.nativeFormat.description = Verwenden Sie das native Datums-/Uhrzeitformat in INSERT-Anweisungen
dataTransfer.processor.sql.property.lineBeforeValues.name = Zeile vor VALUES einf\u00FCgen
dataTransfer.processor.sql.property.lineBeforeValues.description = Zeilenvorsch\u00FCbe vor dem Schl\u00FCsselwort VALUES einf\u00FCgen (f\u00FCr einzeilige Einf\u00FCgungen)
dataTransfer.processor.sql.property.lineBeforeRows.name = Zeile vor Zeilen einf\u00FCgen
dataTransfer.processor.sql.property.lineBeforeRows.description = Zeilenvorsch\u00FCbe vor jeder Wertezeile einf\u00FCgen (f\u00FCr mehrzeilige Einf\u00FCgungen)
dataTransfer.processor.sql.property.keywordCase.name = Schl\u00FCsselwort case
dataTransfer.processor.sql.property.keywordCase.description = Sie k\u00F6nnen zwischen Gro\u00DF- und Kleinschreibung w\u00E4hlen
dataTransfer.processor.txt.description = Export im Klartextformat dataTransfer.processor.txt.description = Export im Klartextformat
dataTransfer.processor.txt.name = TXT dataTransfer.processor.txt.name = TXT
dataTransfer.processor.txt.property.delimLeading.label = F\u00FChrendes Trennzeichen anzeigen dataTransfer.processor.txt.property.delimLeading.label = F\u00FChrendes Trennzeichen anzeigen
......
...@@ -24,6 +24,14 @@ dataTransfer.processor.sql.property.escape.name=\u0421\u0438\u043C\u0432\u043E\u ...@@ -24,6 +24,14 @@ dataTransfer.processor.sql.property.escape.name=\u0421\u0438\u043C\u0432\u043E\u
dataTransfer.processor.sql.property.escape.description=\u0421\u0438\u043C\u0432\u043E\u043B, \u043A\u043E\u0442\u043E\u0440\u044B\u043C \u0431\u0443\u0434\u0443\u0442 \u044D\u043A\u0440\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u043E\u0434\u0438\u043D\u0430\u0440\u043D\u044B\u0435 \u043A\u0430\u0432\u044B\u0447\u043A\u0438 dataTransfer.processor.sql.property.escape.description=\u0421\u0438\u043C\u0432\u043E\u043B, \u043A\u043E\u0442\u043E\u0440\u044B\u043C \u0431\u0443\u0434\u0443\u0442 \u044D\u043A\u0440\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u043E\u0434\u0438\u043D\u0430\u0440\u043D\u044B\u0435 \u043A\u0430\u0432\u044B\u0447\u043A\u0438
dataTransfer.processor.sql.property.rowsInStatement.name=\u0421\u0442\u0440\u043E\u043A \u0434\u0430\u043D\u043D\u044B\u0445 \u0432 \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0438 dataTransfer.processor.sql.property.rowsInStatement.name=\u0421\u0442\u0440\u043E\u043A \u0434\u0430\u043D\u043D\u044B\u0445 \u0432 \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0438
dataTransfer.processor.sql.property.rowsInStatement.description=\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0441\u0442\u0440\u043E\u043A \u0434\u0430\u043D\u043D\u044B\u0445 \u0432 \u043E\u0434\u043D\u043E\u043C \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0438 \u0432\u0441\u0442\u0430\u0432\u043A\u0438 dataTransfer.processor.sql.property.rowsInStatement.description=\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0441\u0442\u0440\u043E\u043A \u0434\u0430\u043D\u043D\u044B\u0445 \u0432 \u043E\u0434\u043D\u043E\u043C \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0438 \u0432\u0441\u0442\u0430\u0432\u043A\u0438
dataTransfer.processor.sql.property.nativeFormat.name=\u041D\u0430\u0442\u0438\u0432\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 \u0434\u0430\u0442\u044B/\u0432\u0440\u0435\u043C\u0435\u043D\u0438
dataTransfer.processor.sql.property.nativeFormat.description=\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 \u0411\u0414 \u0434\u043B\u044F \u0434\u0430\u0442\u044B/\u0432\u0440\u0435\u043C\u0435\u043D\u0438 \u0432 INSERT \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0438
dataTransfer.processor.sql.property.lineBeforeValues.name = \u041F\u0435\u0440\u0435\u0432\u043E\u0434 \u0441\u0442\u0440\u043E\u043A\u0438 \u043F\u0435\u0440\u0435\u0434 VALUES
dataTransfer.processor.sql.property.lineBeforeValues.description = \u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043F\u0435\u0440\u0435\u0432\u043E\u0434 \u0441\u0442\u0440\u043E\u043A\u0438 \u043F\u0435\u0440\u0435\u0434 \u0441\u043B\u043E\u0432\u043E\u043C VALUES (\u0434\u043B\u044F \u043E\u0434\u043D\u043E\u0441\u0442\u0440\u043E\u0447\u043D\u044B\u0445 \u0432\u0441\u0442\u0430\u0432\u043E\u043A)
dataTransfer.processor.sql.property.lineBeforeRows.name = \u041F\u0435\u0440\u0435\u0432\u043E\u0434 \u0441\u0442\u0440\u043E\u043A\u0438 \u043F\u0435\u0440\u0435\u0434 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F\u043C\u0438
dataTransfer.processor.sql.property.lineBeforeRows.description = \u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043F\u0435\u0440\u0435\u0432\u043E\u0434 \u0441\u0442\u0440\u043E\u043A\u0438 \u043F\u0435\u0440\u0435\u0434 \u043A\u0430\u0436\u0434\u044B\u043C \u043D\u0430\u0431\u043E\u0440\u043E\u043C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439 (\u0434\u043B\u044F \u043C\u043D\u043E\u0433\u043E\u0441\u0442\u0440\u043E\u0447\u043D\u044B\u0445 \u0432\u0441\u0442\u0430\u0432\u043E\u043A)
dataTransfer.processor.sql.property.keywordCase.name = \u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u043A\u043B\u044E\u0447\u0435\u0432\u044B\u0445 \u0441\u043B\u043E\u0432
dataTransfer.processor.sql.property.keywordCase.description = \u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0432\u044B\u0431\u0440\u0430\u0442\u044C \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435 \u0437\u0430\u0433\u043B\u0430\u0432\u043D\u044B\u0445 \u0438\u043B\u0438 \u0441\u0442\u0440\u043E\u0447\u043D\u044B\u0445 \u0431\u0443\u043A\u0432
dataTransfer.processor.xml.name=XML dataTransfer.processor.xml.name=XML
dataTransfer.processor.xml.description=\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 XML \u0444\u0430\u0439\u043B(\u044B) dataTransfer.processor.xml.description=\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 XML \u0444\u0430\u0439\u043B(\u044B)
dataTransfer.producer.stream.processor.csv.property.timestampFormat.description = \u0428\u0430\u0431\u043B\u043E\u043D \u0444\u043E\u0440\u043C\u0430\u0442\u0430 \u0434\u0430\u0442\u044B/\u0432\u0440\u0435\u043C\u0435\u043D\u0438. \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0434\u043B\u044F \u0443\u0442\u043E\u0447\u043D\u0435\u043D\u0438\u044F \u0444\u043E\u0440\u043C\u0430\u0442\u0430 \u0434\u0430\u0442\u044B \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0430 \u0434\u0430\u043D\u043D\u044B\u0445, \u043D\u0435 \u0434\u043B\u044F \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F. dataTransfer.producer.stream.processor.csv.property.timestampFormat.description = \u0428\u0430\u0431\u043B\u043E\u043D \u0444\u043E\u0440\u043C\u0430\u0442\u0430 \u0434\u0430\u0442\u044B/\u0432\u0440\u0435\u043C\u0435\u043D\u0438. \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0434\u043B\u044F \u0443\u0442\u043E\u0447\u043D\u0435\u043D\u0438\u044F \u0444\u043E\u0440\u043C\u0430\u0442\u0430 \u0434\u0430\u0442\u044B \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0430 \u0434\u0430\u043D\u043D\u044B\u0445, \u043D\u0435 \u0434\u043B\u044F \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F.
......
...@@ -167,6 +167,10 @@ ...@@ -167,6 +167,10 @@
<property id="nativeFormat" label="%dataTransfer.processor.sql.property.nativeFormat.name" type="boolean" description="%dataTransfer.processor.sql.property.nativeFormat.description" defaultValue="true" /> <property id="nativeFormat" label="%dataTransfer.processor.sql.property.nativeFormat.name" type="boolean" description="%dataTransfer.processor.sql.property.nativeFormat.description" defaultValue="true" />
<property id="omitSchema" label="%dataTransfer.processor.sql.property.omitSchema.name" type="boolean" description="%dataTransfer.processor.sql.property.omitSchema.description" required="false" defaultValue="false"/> <property id="omitSchema" label="%dataTransfer.processor.sql.property.omitSchema.name" type="boolean" description="%dataTransfer.processor.sql.property.omitSchema.description" required="false" defaultValue="false"/>
<property id="rowsInStatement" label="%dataTransfer.processor.sql.property.rowsInStatement.name" type="integer" description="%dataTransfer.processor.sql.property.rowsInStatement.description" defaultValue="10" required="true"/> <property id="rowsInStatement" label="%dataTransfer.processor.sql.property.rowsInStatement.name" type="integer" description="%dataTransfer.processor.sql.property.rowsInStatement.description" defaultValue="10" required="true"/>
<property id="lineBeforeValues" label="%dataTransfer.processor.sql.property.lineBeforeValues.name" type="boolean" description="%dataTransfer.processor.sql.property.lineBeforeValues.description" defaultValue="false" />
<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"/>
</propertyGroup> </propertyGroup>
</processor> </processor>
<processor <processor
......
...@@ -18,6 +18,7 @@ package org.jkiss.dbeaver.tools.transfer.stream.exporter; ...@@ -18,6 +18,7 @@ package org.jkiss.dbeaver.tools.transfer.stream.exporter;
import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.DBPIdentifierCase;
import org.jkiss.dbeaver.model.DBPNamedObject; import org.jkiss.dbeaver.model.DBPNamedObject;
import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.data.*; import org.jkiss.dbeaver.model.data.*;
...@@ -37,6 +38,7 @@ import java.io.File; ...@@ -37,6 +38,7 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.Reader; import java.io.Reader;
import java.util.Map;
/** /**
* SQL Exporter * SQL Exporter
...@@ -50,14 +52,22 @@ public class DataExporterSQL extends StreamExporterAbstract { ...@@ -50,14 +52,22 @@ public class DataExporterSQL extends StreamExporterAbstract {
private static final String PROP_ROWS_IN_STATEMENT = "rowsInStatement"; private static final String PROP_ROWS_IN_STATEMENT = "rowsInStatement";
private static final String PROP_DATA_FORMAT = "nativeFormat"; private static final String PROP_DATA_FORMAT = "nativeFormat";
private static final char STRING_QUOTE = '\''; private static final char STRING_QUOTE = '\'';
private static final String PROP_LINE_BEFORE_VALUES = "lineBeforeValues";
private static final String PROP_LINE_BEFORE_ROWS = "lineBeforeRows";
private static final String PROP_KEYWORD_CASE = "keywordCase";
private boolean includeAutoGenerated; private boolean includeAutoGenerated;
private String rowDelimiter; private String rowDelimiter;
private boolean omitSchema; private boolean omitSchema;
private int rowsInStatement; private int rowsInStatement;
private boolean useNativeDataFormat = true; private boolean useNativeDataFormat = true;
private boolean lineBeforeValues;
private boolean lineBeforeRows = true;
private String tableName; private String tableName;
private DBDAttributeBinding[] columns; private DBDAttributeBinding[] columns;
private final String KEYWORD_INSERT_INTO = "INSERT INTO";
private final String KEYWORD_VALUES = "VALUES";
private DBPIdentifierCase identifierCase;
private transient StringBuilder sqlBuffer = new StringBuilder(100); private transient StringBuilder sqlBuffer = new StringBuilder(100);
private transient long rowCount; private transient long rowCount;
...@@ -72,20 +82,31 @@ public class DataExporterSQL extends StreamExporterAbstract { ...@@ -72,20 +82,31 @@ public class DataExporterSQL extends StreamExporterAbstract {
public void init(IStreamDataExporterSite site) throws DBException { public void init(IStreamDataExporterSite site) throws DBException {
super.init(site); super.init(site);
if (site.getProperties().containsKey(PROP_INCLUDE_AUTO_GENERATED)) { Map<String, Object> properties = site.getProperties();
includeAutoGenerated = CommonUtils.toBoolean(site.getProperties().get(PROP_INCLUDE_AUTO_GENERATED));
if (properties.containsKey(PROP_INCLUDE_AUTO_GENERATED)) {
includeAutoGenerated = CommonUtils.toBoolean(properties.get(PROP_INCLUDE_AUTO_GENERATED));
} }
if (site.getProperties().containsKey(PROP_OMIT_SCHEMA)) { if (properties.containsKey(PROP_OMIT_SCHEMA)) {
omitSchema = CommonUtils.toBoolean(site.getProperties().get(PROP_OMIT_SCHEMA)); omitSchema = CommonUtils.toBoolean(properties.get(PROP_OMIT_SCHEMA));
} }
try { try {
rowsInStatement = Integer.parseInt(String.valueOf(site.getProperties().get(PROP_ROWS_IN_STATEMENT))); rowsInStatement = CommonUtils.toInt(properties.get(PROP_ROWS_IN_STATEMENT));
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
rowsInStatement = 10; rowsInStatement = 10;
} }
useNativeDataFormat = CommonUtils.toBoolean(site.getProperties().get(PROP_DATA_FORMAT)); useNativeDataFormat = CommonUtils.toBoolean(properties.get(PROP_DATA_FORMAT));
lineBeforeValues = CommonUtils.toBoolean(properties.get(PROP_LINE_BEFORE_VALUES));
lineBeforeRows = CommonUtils.toBoolean(properties.get(PROP_LINE_BEFORE_ROWS));
rowDelimiter = GeneralUtils.getDefaultLineSeparator(); rowDelimiter = GeneralUtils.getDefaultLineSeparator();
dialect = SQLUtils.getDialectFromObject(site.getSource()); dialect = SQLUtils.getDialectFromObject(site.getSource());
String keywordCase = CommonUtils.toString(properties.get(PROP_KEYWORD_CASE));
if (keywordCase.equalsIgnoreCase("lower")) {
identifierCase = DBPIdentifierCase.LOWER;
} else {
identifierCase = DBPIdentifierCase.UPPER;
}
} }
@Override @Override
...@@ -120,12 +141,15 @@ public class DataExporterSQL extends StreamExporterAbstract { ...@@ -120,12 +141,15 @@ public class DataExporterSQL extends StreamExporterAbstract {
sqlBuffer.setLength(0); sqlBuffer.setLength(0);
if (rowCount > 0) { if (rowCount > 0) {
if (insertMode == SQLDialect.MultiValueInsertMode.PLAIN) { if (insertMode == SQLDialect.MultiValueInsertMode.PLAIN) {
sqlBuffer.append(");").append(rowDelimiter); sqlBuffer.append(");");
} else if (insertMode == SQLDialect.MultiValueInsertMode.GROUP_ROWS) { } else if (insertMode == SQLDialect.MultiValueInsertMode.GROUP_ROWS) {
sqlBuffer.append(";").append(rowDelimiter); sqlBuffer.append(";");
}
if (lineBeforeRows) {
sqlBuffer.append(rowDelimiter);
} }
} }
sqlBuffer.append("INSERT INTO ").append(tableName).append(" ("); sqlBuffer.append(identifierCase.transform(KEYWORD_INSERT_INTO)).append(" ").append(tableName).append(" (");
boolean hasColumn = false; boolean hasColumn = false;
for (int i = 0; i < columnsSize; i++) { for (int i = 0; i < columnsSize; i++) {
DBDAttributeBinding column = columns[i]; DBDAttributeBinding column = columns[i];
...@@ -138,11 +162,15 @@ public class DataExporterSQL extends StreamExporterAbstract { ...@@ -138,11 +162,15 @@ public class DataExporterSQL extends StreamExporterAbstract {
hasColumn = true; hasColumn = true;
sqlBuffer.append(DBUtils.getQuotedIdentifier(column)); sqlBuffer.append(DBUtils.getQuotedIdentifier(column));
} }
sqlBuffer.append(") VALUES "); sqlBuffer.append(") ");
if (lineBeforeValues && insertMode != SQLDialect.MultiValueInsertMode.GROUP_ROWS) {
sqlBuffer.append(rowDelimiter).append("\t");
}
sqlBuffer.append(identifierCase.transform(KEYWORD_VALUES));
if (insertMode != SQLDialect.MultiValueInsertMode.GROUP_ROWS) { if (insertMode != SQLDialect.MultiValueInsertMode.GROUP_ROWS) {
sqlBuffer.append("("); sqlBuffer.append(" (");
} }
if (rowsInStatement > 1) { if (rowsInStatement > 1 && lineBeforeRows) {
sqlBuffer.append(rowDelimiter); sqlBuffer.append(rowDelimiter);
} }
out.write(sqlBuffer.toString()); out.write(sqlBuffer.toString());
...@@ -150,9 +178,15 @@ public class DataExporterSQL extends StreamExporterAbstract { ...@@ -150,9 +178,15 @@ public class DataExporterSQL extends StreamExporterAbstract {
} }
if (insertMode != SQLDialect.MultiValueInsertMode.NOT_SUPPORTED && !firstRow) { if (insertMode != SQLDialect.MultiValueInsertMode.NOT_SUPPORTED && !firstRow) {
out.write(","); out.write(",");
if (lineBeforeRows) {
out.write(rowDelimiter);
}
} }
if (insertMode == SQLDialect.MultiValueInsertMode.GROUP_ROWS) { if (insertMode == SQLDialect.MultiValueInsertMode.GROUP_ROWS) {
out.write("("); if (lineBeforeRows) {
out.write("\t");
}
out.write(" (");
} }
rowCount++; rowCount++;
boolean hasValue = false; boolean hasValue = false;
...@@ -208,7 +242,6 @@ public class DataExporterSQL extends StreamExporterAbstract { ...@@ -208,7 +242,6 @@ public class DataExporterSQL extends StreamExporterAbstract {
if (insertMode == SQLDialect.MultiValueInsertMode.NOT_SUPPORTED) { if (insertMode == SQLDialect.MultiValueInsertMode.NOT_SUPPORTED) {
out.write(";"); out.write(";");
} }
out.write(rowDelimiter);
} }
@Override @Override
...@@ -265,7 +298,7 @@ public class DataExporterSQL extends StreamExporterAbstract { ...@@ -265,7 +298,7 @@ public class DataExporterSQL extends StreamExporterAbstract {
private SQLDialect.MultiValueInsertMode getMultiValueInsertMode() { private SQLDialect.MultiValueInsertMode getMultiValueInsertMode() {
SQLDialect.MultiValueInsertMode insertMode = SQLDialect.MultiValueInsertMode.NOT_SUPPORTED; SQLDialect.MultiValueInsertMode insertMode = SQLDialect.MultiValueInsertMode.NOT_SUPPORTED;
if (dialect != null) { if (dialect != null && rowsInStatement != 1) {
insertMode = dialect.getMultiValueInsertMode(); insertMode = dialect.getMultiValueInsertMode();
} }
return insertMode; return insertMode;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册