Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

247
Vistas
copo de nieve convertir todas las columnas a mayúsculas

Tengo SP que mira la tabla de columnas del esquema de información y convierte las columnas en minúsculas en mayúsculas. No se pueden envolver códigos dobles alrededor del objeto.

 ALTER TABLE SCHEMA_S.TBLNAME RENAME COLUMN ColName to COLNAME; //Won't work ALTER TABLE "SCHEMA_S"."TBLNAME" RENAME COLUMN "ColName" to "COLNAME"; //this works select ('ALTER TABLE ' || TABLE_NAME || ' RENAME COLUMN "' || COLUMN_NAME || '" to "' || UPPER(COLUMN_NAME) || '";') AS COL1 from information_schema.columns WHERE TABLE_NAME = 'TBLNAME' AND TABLE_SCHEMA = 'SCHEMA_S' AND COLUMN_NAME != UPPER(COLUMN_NAME) //this works in Snowflake

Pero dentro de javascript, no se pueden usar comillas dobles javascript

 var table_control = " SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA,'.' ,TABLE_NAME, ' RENAME COLUMN ', COLUMN_NAME, ' to ', UPPER(COLUMN_NAME), ';') AS COL1 " table_control += " FROM INFORMATION_SCHEMA.COLUMNS " table_control += " WHERE TABLE_SCHEMA = " + String.fromCharCode(39) + CURRENT_SCHEMA + String.fromCharCode(39) table_control += " AND TABLE_NAME = " + String.fromCharCode(39) + CURRENT_TABLE + String.fromCharCode(39) table_control += " AND COLUMN_NAME != UPPER(COLUMN_NAME) " ; //this works var table_control = " SELECT CONCAT('ALTER TABLE "', TABLE_SCHEMA,'"."' ,TABLE_NAME, '" RENAME COLUMN "', COLUMN_NAME, '" to "', UPPER(COLUMN_NAME), '";') AS COL1 " table_control += " FROM INFORMATION_SCHEMA.COLUMNS " table_control += " WHERE TABLE_SCHEMA = " + String.fromCharCode(39) + CURRENT_SCHEMA + String.fromCharCode(39) table_control += " AND TABLE_NAME = " + String.fromCharCode(39) + CURRENT_TABLE + String.fromCharCode(39) table_control += " AND COLUMN_NAME != UPPER(COLUMN_NAME) " ; //won't work

Aparece a continuación, error de compilación de JavaScript: error de sintaxis no detectado: cadena inesperada en CONVERT_TBL_COLUMNS_UPPERCASE en ' var table_control = " SELECT CONCAT('ALTER TABLE "', TABLE_SCHEMA,'"."' ,TABLE_NAME, '" RENAME COLUMN "', COLUMN_NAME, ' " a "', UPPER(COLUMN_NAME), '";') AS COL1 " ' posición 58

En pocas palabras: necesito concatenar objetos (columnas/esquema/tabla) con doble verificación para que pueda cambiar el nombre de la columna en mayúsculas dinámicamente a través de javascript.

Por favor ayuda, me estoy perdiendo algo simple!

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Creé un JS UDF que cambiará el nombre de las columnas a mayúsculas.

Utiliza cadenas de plantilla JS para evitar problemas con las comillas de escape:

 create or replace procedure alter_table_to_uppercase( TABLE_SCHEMA string, TABLE_NAME string ) returns variant language javascript as $$ var select_cols = ` select column_name from information_schema.columns where table_catalog = current_database() and table_schema = '${TABLE_SCHEMA}' and table_name = '${TABLE_NAME}' and column_name != upper(column_name) `; var statement1 = snowflake.createStatement( {sqlText: select_cols} ); var result_set1 = statement1.execute(); var cols_changed = []; while (result_set1.next()) { var col_name = result_set1.getColumnValue(1); var alter_sql = ` alter table ${TABLE_SCHEMA}.${TABLE_NAME} rename column "${col_name}" to "${col_name.toUpperCase()}" ` snowflake.createStatement({sqlText: alter_sql}).execute(); cols_changed.push(col_name); } return cols_changed; $$

Probarlo es fácil:

 create or replace table lowercased as select 1 "a", 2 "b", 3 "c" ; call alter_table_to_uppercase(current_schema(), 'LOWERCASED');
about 4 years ago · Juan Pablo Isaza Denunciar

0

Algunos pensamientos adicionales que podrían ser útiles para resolver su problema.

  • No puede cambiar el nombre de una columna que forma parte de una clave de agrupación. Lo que significa que la consulta/el proceso almacenado fallará cuando llegue a una columna que sea una clave de agrupación.
  • Puede identificar las columnas que forman parte de la clave de agrupación mediante el uso de System$Clustering_Information
  • De forma predeterminada, todos los nombres de las columnas se almacenan en mayúsculas, si no entre comillas , por lo que en realidad no tiene que hacer nada. Agregar comillas elimina esta configuración predeterminada.
  • Es posible que sea mejor resolver el problema con un parámetro de sesión como QUOTED_IDENTIFIERS_IGNORE_CASE
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda