file_loader.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package utils
  2. import (
  3. "fmt"
  4. "os"
  5. "strings"
  6. )
  7. func LoadTableList() ([]string, error) {
  8. // 检查文件是否存在
  9. if _, err := os.Stat("table_list.txt"); os.IsNotExist(err) {
  10. // 文件不存在,创建文件
  11. file, err := os.Create("table_list.txt")
  12. if err != nil {
  13. return nil, fmt.Errorf("创建 table_list.txt 文件失败: %v", err)
  14. }
  15. defer file.Close()
  16. // 可以写入一些示例内容
  17. _, err = file.WriteString("# 表列表,每行一个表名\n# users\n# orders\n# products\n")
  18. if err != nil {
  19. return nil, fmt.Errorf("写入 table_list.txt 文件失败: %v", err)
  20. }
  21. return nil, fmt.Errorf("table_list.txt 文件不存在,已创建空文件")
  22. }
  23. // 读取文件内容
  24. content, err := os.ReadFile("table_list.txt")
  25. if err != nil {
  26. return nil, fmt.Errorf("读取 table_list.txt 文件失败: %v", err)
  27. }
  28. // 按行分割内容
  29. lines := strings.Split(string(content), "\n")
  30. var tables []string
  31. for _, line := range lines {
  32. line = strings.TrimSpace(line)
  33. // 跳过空行和注释行
  34. if line == "" || strings.HasPrefix(line, "#") {
  35. continue
  36. }
  37. tables = append(tables, line)
  38. }
  39. return tables, nil
  40. }
  41. func LoadDBConfig() (map[string]string, error) {
  42. // 检查文件是否存在
  43. if _, err := os.Stat("db_config.txt"); os.IsNotExist(err) {
  44. // 文件不存在,创建文件
  45. file, err := os.Create("db_config.txt")
  46. if err != nil {
  47. return nil, fmt.Errorf("创建 db_config.txt 文件失败: %v", err)
  48. }
  49. defer file.Close()
  50. // 写入默认配置示例
  51. defaultConfig := `# 数据库配置
  52. host=localhost
  53. port=3306
  54. username=root
  55. password=
  56. database=test
  57. `
  58. _, err = file.WriteString(defaultConfig)
  59. if err != nil {
  60. return nil, fmt.Errorf("写入 db_config.txt 文件失败: %v", err)
  61. }
  62. return nil, fmt.Errorf("db_config.txt 文件不存在,已创建示例配置文件")
  63. }
  64. // 读取文件内容
  65. content, err := os.ReadFile("db_config.txt")
  66. if err != nil {
  67. return nil, fmt.Errorf("读取 db_config.txt 文件失败: %v", err)
  68. }
  69. // 解析配置
  70. config := make(map[string]string)
  71. lines := strings.Split(string(content), "\n")
  72. for _, line := range lines {
  73. line = strings.TrimSpace(line)
  74. // 跳过空行和注释行
  75. if line == "" || strings.HasPrefix(line, "#") {
  76. continue
  77. }
  78. // 解析 key=value 格式
  79. parts := strings.SplitN(line, "=", 2)
  80. if len(parts) == 2 {
  81. key := strings.TrimSpace(parts[0])
  82. value := strings.TrimSpace(parts[1])
  83. config[key] = value
  84. }
  85. }
  86. return config, nil
  87. }