如何使用SQL为带有电话号码的数据库表种子?

如何使用SQL为带有电话号码的数据库表种子?,sql,postgresql,Sql,Postgresql,我的postgres数据库中有一个表,用于存储电话号码,格式为:12223334444(作为varchar) 据我所知,我将与美国的电话号码,只是我认为这将是一个好主意,预先填充数据库与所有电话号码,可以要求。也就是说,从11_111_111_111到19_999_999的所有数字 现在我通过使用应用程序代码来实现这一点,这需要很长时间 假设我有一个名为phones的表和一个名为digits的列,有没有办法使用SQL填充数据库 谢谢大家! 这是一个疯狂的问题,但博士后有答案 SELECT gen

我的postgres数据库中有一个表,用于存储电话号码,格式为:
12223334444
(作为varchar)

据我所知,我将与美国的电话号码,只是我认为这将是一个好主意,预先填充数据库与所有电话号码,可以要求。也就是说,从
11_111_111_111
19_999_999
的所有数字

现在我通过使用应用程序代码来实现这一点,这需要很长时间

假设我有一个名为
phones
的表和一个名为
digits
的列,有没有办法使用SQL填充数据库


谢谢大家!

这是一个疯狂的问题,但博士后有答案

SELECT generate_series(1,19999999999)
这将创建一个表,其中所有数字都在1和199999999之间

 INSERT INTO phone_table(phone number) 
 SELECT LPAD(g::VARCHAR(12),10,'0') FROM generate_series(1,19999999999) AS g;

这仍然需要很长时间,但可能比应用程序代码快

这是一个疯狂的问题,但博士后有答案

SELECT generate_series(1,19999999999)
这将创建一个表,其中所有数字都在1和199999999之间

 INSERT INTO phone_table(phone number) 
 SELECT LPAD(g::VARCHAR(12),10,'0') FROM generate_series(1,19999999999) AS g;

这仍然需要很长时间,但可能比应用程序代码快

这是一个疯狂的问题,但博士后有答案

SELECT generate_series(1,19999999999)
这将创建一个表,其中所有数字都在1和199999999之间

 INSERT INTO phone_table(phone number) 
 SELECT LPAD(g::VARCHAR(12),10,'0') FROM generate_series(1,19999999999) AS g;

这仍然需要很长时间,但可能比应用程序代码快

这是一个疯狂的问题,但博士后有答案

SELECT generate_series(1,19999999999)
这将创建一个表,其中所有数字都在1和199999999之间

 INSERT INTO phone_table(phone number) 
 SELECT LPAD(g::VARCHAR(12),10,'0') FROM generate_series(1,19999999999) AS g;
这仍然需要很长时间,但可能比应用程序代码快

这是个坏主意

select 19999999999 - 11111111111;
8888888888 这大约是89亿个电话号码。不要建那么大的桌子,除非你必须这样做。较大的表会严重影响事务日志、索引大小、备份大小和完成时间等

但是,如果您需要为PostgreSQL生成和加载大量这样的数据,有两种明智的方法

步骤取决于是使用PostgreSQL还是使用应用程序代码生成数据

对于PostgreSQL,在事务中

  • 删除所有索引和约束
  • 生成并插入数据
  • 创建所有索引和约束,以及
  • 提交事务
如果一次提交(比如)10k行,插入大量数据的速度会快得多。实验。如果这样做,则需要在上述步骤中调整事务边界。(每个步骤都成为一个或多个事务。)

如果使用应用程序代码,通常最快的方法是

  • 使用应用程序代码生成csv文件
  • 删除所有索引和约束
  • 加载带有副本的csv文件
  • 创建所有索引和约束
  • 这是个坏主意

    select 19999999999 - 11111111111;
    
    8888888888 这大约是89亿个电话号码。不要建那么大的桌子,除非你必须这样做。较大的表会严重影响事务日志、索引大小、备份大小和完成时间等

    但是,如果您需要为PostgreSQL生成和加载大量这样的数据,有两种明智的方法

    步骤取决于是使用PostgreSQL还是使用应用程序代码生成数据

    对于PostgreSQL,在事务中

    • 删除所有索引和约束
    • 生成并插入数据
    • 创建所有索引和约束,以及
    • 提交事务
    如果一次提交(比如)10k行,插入大量数据的速度会快得多。实验。如果这样做,则需要在上述步骤中调整事务边界。(每个步骤都成为一个或多个事务。)

    如果使用应用程序代码,通常最快的方法是

    • 使用应用程序代码生成csv文件
    • 删除所有索引和约束
    • 加载带有副本的csv文件
    • 创建所有索引和约束
    • 这是个坏主意

      select 19999999999 - 11111111111;
      
      8888888888 这大约是89亿个电话号码。不要建那么大的桌子,除非你必须这样做。较大的表会严重影响事务日志、索引大小、备份大小和完成时间等

      但是,如果您需要为PostgreSQL生成和加载大量这样的数据,有两种明智的方法

      步骤取决于是使用PostgreSQL还是使用应用程序代码生成数据

      对于PostgreSQL,在事务中

      • 删除所有索引和约束
      • 生成并插入数据
      • 创建所有索引和约束,以及
      • 提交事务
      如果一次提交(比如)10k行,插入大量数据的速度会快得多。实验。如果这样做,则需要在上述步骤中调整事务边界。(每个步骤都成为一个或多个事务。)

      如果使用应用程序代码,通常最快的方法是

      • 使用应用程序代码生成csv文件
      • 删除所有索引和约束
      • 加载带有副本的csv文件
      • 创建所有索引和约束
      • 这是个坏主意

        select 19999999999 - 11111111111;
        
        8888888888 这大约是89亿个电话号码。不要建那么大的桌子,除非你必须这样做。较大的表会严重影响事务日志、索引大小、备份大小和完成时间等

        但是,如果您需要为PostgreSQL生成和加载大量这样的数据,有两种明智的方法

        步骤取决于是使用PostgreSQL还是使用应用程序代码生成数据

        对于PostgreSQL,在事务中

        • 删除所有索引和约束
        • 生成并插入数据
        • 创建所有索引和约束,以及
        • 提交事务
        如果提交,则插入大量数据的速度要快得多