|
|
@ -51,12 +51,12 @@ Examples: |
|
|
|
} |
|
|
|
|
|
|
|
var ( |
|
|
|
sqlServer = cmdSql.Flag.String("server", "localhost:8888", "SeaweedFS server address") |
|
|
|
sqlServer = cmdSql.Flag.String("server", "localhost:8888", "SeaweedFS server address") |
|
|
|
sqlInteractive = cmdSql.Flag.Bool("interactive", false, "start interactive shell mode") |
|
|
|
sqlFile = cmdSql.Flag.String("file", "", "execute SQL queries from file") |
|
|
|
sqlOutput = cmdSql.Flag.String("output", "", "output format: table, json, csv (auto-detected if not specified)") |
|
|
|
sqlDatabase = cmdSql.Flag.String("database", "", "default database context") |
|
|
|
sqlQuery = cmdSql.Flag.String("query", "", "execute single SQL query") |
|
|
|
sqlFile = cmdSql.Flag.String("file", "", "execute SQL queries from file") |
|
|
|
sqlOutput = cmdSql.Flag.String("output", "", "output format: table, json, csv (auto-detected if not specified)") |
|
|
|
sqlDatabase = cmdSql.Flag.String("database", "", "default database context") |
|
|
|
sqlQuery = cmdSql.Flag.String("query", "", "execute single SQL query") |
|
|
|
) |
|
|
|
|
|
|
|
// OutputFormat represents different output formatting options
|
|
|
@ -64,7 +64,7 @@ type OutputFormat string |
|
|
|
|
|
|
|
const ( |
|
|
|
OutputTable OutputFormat = "table" |
|
|
|
OutputJSON OutputFormat = "json" |
|
|
|
OutputJSON OutputFormat = "json" |
|
|
|
OutputCSV OutputFormat = "csv" |
|
|
|
) |
|
|
|
|
|
|
@ -79,11 +79,11 @@ type SQLContext struct { |
|
|
|
func runSql(command *Command, args []string) bool { |
|
|
|
// Initialize SQL engine
|
|
|
|
sqlEngine := engine.NewSQLEngine(*sqlServer) |
|
|
|
|
|
|
|
|
|
|
|
// Determine execution mode and output format
|
|
|
|
interactive := *sqlInteractive || (*sqlQuery == "" && *sqlFile == "") |
|
|
|
outputFormat := determineOutputFormat(*sqlOutput, interactive) |
|
|
|
|
|
|
|
|
|
|
|
// Create SQL context
|
|
|
|
ctx := &SQLContext{ |
|
|
|
engine: sqlEngine, |
|
|
@ -130,7 +130,7 @@ func executeSingleQuery(ctx *SQLContext, query string) bool { |
|
|
|
// Suppress banner for non-interactive output
|
|
|
|
return executeAndDisplay(ctx, query, false) |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
fmt.Printf("Executing query against %s...\n", *sqlServer) |
|
|
|
return executeAndDisplay(ctx, query, true) |
|
|
|
} |
|
|
@ -149,7 +149,7 @@ func executeFileQueries(ctx *SQLContext, filename string) bool { |
|
|
|
|
|
|
|
// Split file content into individual queries (simple approach)
|
|
|
|
queries := strings.Split(string(content), ";") |
|
|
|
|
|
|
|
|
|
|
|
for i, query := range queries { |
|
|
|
query = strings.TrimSpace(query) |
|
|
|
if query == "" { |
|
|
|