【问题标题】:What is the simplest and quickest way to export your SQL Server table columns and their types to a BigQuery table?将 SQL Server 表列及其类型导出到 BigQuery 表的最简单、最快捷的方法是什么?
【发布时间】:2019-12-18 04:23:54
【问题描述】:

我在 SQL Server 中有一个包含 120 列的表,我必须在 BigQuery 中复制相同的列名及其类型。

在 Bigquery 中为上述数据类型一一创建表列需要大量时间。有没有更快的方法来创建它?

谢谢,

【问题讨论】:

    标签: sql-server google-cloud-platform google-bigquery


    【解决方案1】:

    你在找吗:

    generate DDL script from SQL Server database

    声明 @C VARCHAR(200) 声明 C 光标 从 SYS.TABLES 中选择 'EXEC [DBO].[SP_GETDDL] '''+NAME+'''' 打开 C 从 C 获取下一个到 @C 而@@FETCH_STATUS=0 开始 执行 (@C) 从 C 获取下一个到 @C 结尾 关闭 C 解除分配 C

    【讨论】:

      【解决方案2】:

      你可以生成脚本..

      1. 右键单击您的数据库
      2. 转到生成脚本
      3. 选择要为其生成脚本的 Db 对象 Like(表、存储过程)!
      4. 点击“下一步”按钮
      5. 选择任何选项进行查询,如“新查询编辑器”或将文件保存到剪贴板..

      【讨论】:

        【解决方案3】:

        您可以编写一个从 INFORMATION_SCHEMA 获取表模式的 sql 脚本。 BigQuery JSON 架构格式的 COLUMNS 视图:

        [
         {
           "description": "[DESCRIPTION]",
           "name": "[NAME]",
           "type": "[TYPE]",
           "mode": "[MODE]"
         },
         {
           "description": "[DESCRIPTION]",
           "name": "[NAME]",
           "type": "[TYPE]",
           "mode": "[MODE]"
         }
        ]
        

        然后只需使用此 JSON 在 BigQuery 中创建表。

        但首先您需要在 SQL Server 和 BigQuery 之间映射数据类型 例如 sql server 中的 varchar 等价于 bigquery 中的 STRING

        您可以使用 json 使用 CLI、Python 甚至 Google 云控制台创建表。 (Specifying a schema)

        【讨论】:

          【解决方案4】:

          一种简单的方法是从 SQL Server 将表的示例数据(可以是 10 行或更少,带标题且不带空值)导出为 CSV,然后使用自动架构检测将此文件加载到 Bigquery。

          如果在此之后,您想要获取 Bigquery Schema 以创建另一个表或将其用于另一个提议,您可以使用此命令获取该模式。

          bq show --schema --format=prettyjson dataset.table > schema.json
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-07-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多