【发布时间】:2019-12-18 04:23:54
【问题描述】:
我在 SQL Server 中有一个包含 120 列的表,我必须在 BigQuery 中复制相同的列名及其类型。
在 Bigquery 中为上述数据类型一一创建表列需要大量时间。有没有更快的方法来创建它?
谢谢,
【问题讨论】:
标签: sql-server google-cloud-platform google-bigquery
我在 SQL Server 中有一个包含 120 列的表,我必须在 BigQuery 中复制相同的列名及其类型。
在 Bigquery 中为上述数据类型一一创建表列需要大量时间。有没有更快的方法来创建它?
谢谢,
【问题讨论】:
标签: sql-server google-cloud-platform google-bigquery
你在找吗:
声明 @C VARCHAR(200) 声明 C 光标 从 SYS.TABLES 中选择 'EXEC [DBO].[SP_GETDDL] '''+NAME+'''' 打开 C 从 C 获取下一个到 @C 而@@FETCH_STATUS=0 开始 执行 (@C) 从 C 获取下一个到 @C 结尾 关闭 C 解除分配 C【讨论】:
你可以生成脚本..
【讨论】:
您可以编写一个从 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)
【讨论】:
一种简单的方法是从 SQL Server 将表的示例数据(可以是 10 行或更少,带标题且不带空值)导出为 CSV,然后使用自动架构检测将此文件加载到 Bigquery。
如果在此之后,您想要获取 Bigquery Schema 以创建另一个表或将其用于另一个提议,您可以使用此命令获取该模式。
bq show --schema --format=prettyjson dataset.table > schema.json
【讨论】: