我们的 Excel 文件已连接到我们的 redshift 数据库。 redshift 不允许列中出现大写字母,除非我将
enable_case_sensitive_identifier
设置为 true。
在 VBA 代码中设置它只会破坏代码,不会生成任何数据,但也不会生成错误。换句话说,当我单击运行
GenerateData()
的按钮时,什么也没有发生。当我评论第一行时,它就可以工作,但列名都是小写的。
有没有办法在VBA代码中将
enable_case_sensitive_identifier
设置为true?或者还有其他方法将列更改为大写吗?
Sub GenerateData()
Dim sql As String
' sql = "SET enable_case_sensitive_identifier TO true;"
sql = "select " & _
"emp_name as " & Chr(34) & "Employee Name" & Chr(34) & ", " & _
"buyer_name as " & Chr(34) & "BUYER Name" & Chr(34) & ", " & _
"purchase_date " & _
"from " & _
"MyRedshiftTable "
Application.DisplayAlerts = False
Sheets("Data").Select
With ActiveWorkbook.Connections("redshiftdb").ODBCConnection
.CommandText = sql
End With
ActiveWorkbook.RefreshAll
Application.DisplayAlerts = True
End Sub
将enable_case_sensitive_identifier设置为true也意味着在SQL中选择列时将使用大小写。 那么列名是 emp_name 还是类似 Emp_Name 的名称? 为了让 Redshift 尊重 SQL 中列名的大写,您需要将它们用双引号引起来。 类似于 SELECT "Emp_Name" FROM ".