MCPcopy Create free account
hub / github.com/bytebase/bytebase / SQLStatementPrefix

Function SQLStatementPrefix

backend/component/export/sql.go:55–82  ·  view source on GitHub ↗

SQLStatementPrefix generates the INSERT INTO statement prefix.

(engine storepb.Engine, resourceList []base.SchemaResource, columnNames []string)

Source from the content-addressed store, hash-verified

53
54// SQLStatementPrefix generates the INSERT INTO statement prefix.
55func SQLStatementPrefix(engine storepb.Engine, resourceList []base.SchemaResource, columnNames []string) (string, error) {
56 var escapeQuote string
57 switch engine {
58 case storepb.Engine_MYSQL, storepb.Engine_MARIADB, storepb.Engine_TIDB, storepb.Engine_OCEANBASE, storepb.Engine_SPANNER:
59 escapeQuote = "`"
60 case storepb.Engine_CLICKHOUSE, storepb.Engine_MSSQL, storepb.Engine_ORACLE, storepb.Engine_POSTGRES, storepb.Engine_REDSHIFT, storepb.Engine_SQLITE, storepb.Engine_SNOWFLAKE:
61 escapeQuote = "\""
62 default:
63 return "", errors.Errorf("unsupported engine %v for exporting as SQL", engine)
64 }
65
66 s := "INSERT INTO "
67 if len(resourceList) == 1 {
68 resource := resourceList[0]
69 if resource.Schema != "" {
70 s = fmt.Sprintf("%s%s%s%s%s", s, escapeQuote, resource.Schema, escapeQuote, ".")
71 }
72 s = fmt.Sprintf("%s%s%s%s", s, escapeQuote, resource.Table, escapeQuote)
73 } else {
74 s = fmt.Sprintf("%s%s%s%s", s, escapeQuote, "<table_name>", escapeQuote)
75 }
76 var columnTokens []string
77 for _, columnName := range columnNames {
78 columnTokens = append(columnTokens, fmt.Sprintf("%s%s%s", escapeQuote, columnName, escapeQuote))
79 }
80 s = fmt.Sprintf("%s (%s) VALUES (", s, strings.Join(columnTokens, ","))
81 return s, nil
82}
83
84func convertValueToBytesInSQL(engine storepb.Engine, value *v1pb.RowValue) []byte {
85 if value == nil || value.Kind == nil {

Callers 3

exportSQLWithContextMethod · 0.92
exportSQLWithContextFunction · 0.92

Calls 2

ErrorfMethod · 0.80
JoinMethod · 0.80

Tested by 1