Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PostgreSQL中创建多个表_Sql_Postgresql - Fatal编程技术网

在PostgreSQL中创建多个表

在PostgreSQL中创建多个表,sql,postgresql,Sql,Postgresql,我想一次创建多个表(超过100个表)。我正在尝试使用循环(如for-loop)编写一个脚本,以生成所需的任意多个表。我是PostgreSQL的新手。如果有人能给我一些建议,我将不胜感激。我的答案是“不要这样做!”改变你的架构。创建一个名为customer的表,并将customer\u id与一些其他信息一起创建。创建第二个表,其中包含所需的列和一个“customer\u id”列以引用customer表。此格式将允许您在两个表中存储您试图在100多个表中存储的内容。你想在这个阶段开始你的数据库设

我想一次创建多个表(超过100个表)。我正在尝试使用循环(如for-loop)编写一个脚本,以生成所需的任意多个表。我是PostgreSQL的新手。如果有人能给我一些建议,我将不胜感激。

我的答案是“不要这样做!”改变你的架构。创建一个名为customer的表,并将customer\u id与一些其他信息一起创建。创建第二个表,其中包含所需的列和一个“customer\u id”列以引用customer表。此格式将允许您在两个表中存储您试图在100多个表中存储的内容。你想在这个阶段开始你的数据库设计……否则你将在不远的将来成为一场噩梦。数据库不是电子表格…

我会重新考虑为什么要在一个数据库中创建100多个表…尤其是在循环中。您是否尝试为每个用户或每个客户创建相同的表?添加名为“customer\u name”的列或customer\u id字段是一个更好的选择。@第十二,你是对的。我正在尝试为每个客户创建表,是的,表是相同的。我通常使用带有简单文本连接公式的电子表格来完成此类一次性任务,例如:
=“create table”&A1&“(a int,b int);“
其中在列a中有表名,然后只需复制/粘贴此公式。IIRC这将是bash扩展。更新:不,不是。(但是嘿!我喜欢明确地说)但至少它可以在ARG_MAX<100;-)的系统上工作我非常感谢你的建议,但这是我客户的要求。组织想要将他们的表按客户细分。@user2711722:这是我听说过的最愚蠢的要求。如果我是你,我就拒绝实施这种胡说八道。您仍然可以创建一个表,并创建一个视图,使用Twelth’Approach“伪造”特定于客户的表。我仍然可以确保他们理解他们在这里制造的噩梦……未来的管理成本和庞大的设置将削弱他们以后的业务(这就是为什么您的问题现在是-2)。这就是说,客户总是对的,如果他们想跳下悬崖,我们有责任把他们甩掉。最终有人会得到一份清理合同。您可以使用动态SQL(安全漏洞,但我感觉您的客户机不会在意)循环此操作。不过,我更喜欢Tomas Greif所说的,使用电子表格来批量创建这些表。要重复没有名字的马…我会重新考虑我的上一条评论,拒绝实现,如果需要的话甚至会放弃工作…让我的名字与这样的数据库实现相关联是不值得的。
#!/bin/sh

(
for i in 0 1 2 3 4 5 6 7 8 9; do
for j in 0 1 2 3 4 5 6 7 8 9; do
        echo "SET search_path=tmp;"
        echo "CREATE TABLE barf${i}${j}"
        echo " ( id SERIAL NOT NULL PRIMARY KEY );"
done
done) | psql -U lutsername databasename