tant que j'ai un spécialiste en ligne...
j'ai persuadé mon patron de passer d'Access à PostgreSQL
mais pour le front-end ?
on peut garder Access
pensez-vous que Base de LibreOffice est assez puissant ?
et pour faire des forms en web, quel outil conseilleriez vous ?
]]>drôle d'idée ;-)
on fait des trucs comme ça chez Dalibo ?
]]>#
# convert all tables and columns of a dd to lower case
#
psql contacts_test -U postgres -t > RenTables.sql <<EOF
select
'alter table "' || table_name || '" rename to "' || lower(table_name) || '";'
from
information_schema.tables
where
table_schema = 'public'
order by
table_schema,table_name;
EOF
psql contacts_test -U postgres -f RenTables.sql
psql contacts_test -U postgres -t > RenColumns.sql <<EOF
select
'alter table ' || c.table_name || ' rename column "' || c.column_name || '" to "' || lower(c.column_name) || '";'
from
information_schema.columns c
inner join
information_schema.tables t
on
c.table_name = t.table_name
where
t.table_schema = 'public';
EOF
psql contacts_test -U postgres -f RenColumns.sql
Vive PostgreSQL !
]]>Si on joue le résultat de
select
'alter table "' || table_name || '" rename to "' || lower(table_name) || '";'
from
information_schema.tables
where
table_schema = 'public'
order by
table_schema,table_name;
en ensuite, on joue le résultat de
select
'alter table ' || c.table_name || ' rename column "' || c.column_name || '" to "' || lower(c.column_name) || '";'
from
information_schema.columns c
inner join
information_schema.tables t
on
c.table_name = t.table_name
where
t.table_schema = 'public';
ne pensez-vous pas, alors, que le problème est résolu ?
]]>Mais ce n'est pas moi qui ai créé les objets, c'est la bd access existante et je ne vois pas d'options dans Bullzip qui me permettrait de mettre les noms d'objets en minuscules
]]>J'ai créé ma db pg à partir d'une bd access au moyen de Bullzip.
Est-il possible de faire que les noms d'objets soient CI afin d'éviter de mettre des " dans les queries ?
]]>Encore une petite question : pourquoi dois-je écrire :
alter table "a" alter column "c" type citext;
et non
alter table a alter column c type citext;
Est-ce dû à la collation ?
Peut-on se passer de ces " ?
]]>Pour avoir des champs case insensitive dans PostgreSQL, on ne modifie pas la collation (je présume que vous venez de SQL Server ?). Avec PostgreSQL, soit on fait comme sous Oracle (on requête sur lower ou upper des chaînes et on crée des index sur lower et upper de ces chaînes au besoin), soit on utilise l'extension citext, qui fournit un nouveau type citext. Si vous avez installé les «contribs», cela se fait assez simplement:
CREATE EXTENSION citext;
CREATE TABLE ma_table ( a int, b citext)…
Si vous avez besoin de donner des limites de taille à vos champs citext, il faut rajouter des contraintes check. Par exemple:
CREATE TABLE test (a citext CHECK (length(a) < 50));