google-bigquery - 如何使用节点 js 客户端在 BigQuery 中存储数字类型以进行流式插入?
问题描述
鉴于 BigQuery 中的数字类型支持超出 Javascript 数字类型的限制,如何使用节点 js 客户端Table.insert(rows, options, callback)
方法存储数字类型?为了使用字符串类型处理大数字,我正在考虑使用https://github.com/MikeMcl/big.js。如果我为 BigQuery 表中的数字字段发送字符串值(包含超出 javascript 数量限制的有效数字),它会起作用吗?
解决方案
您需要将对于 JavaScript 来说太大的数字视为字符串。
例如,JS 不知道如何处理-99999999999999999999999999999.999999999
:
同时,这段代码在 NodeJS 中工作,将这个巨大的数字插入 BigQuery:
BigQuery = require('@google-cloud/bigquery');
bigquery = BigQuery({projectId: 'my-project'});
dataset = bigquery.dataset('tt');
table = dataset.table('testfun_numeric');
rows = [{
name:"whatever",
numi: "-99999999999999999999999999999.999999999"
}];
table.insert(rows);
在 BigQuery 中:
SELECT name, numi
, numi=numi+1000 better_comparison
FROM `fh-bigquery.tt.testfun_numeric`
我之前在 BigQuery 中使用
CREATE TABLE `tt.testfun_numeric`
AS
SELECT '' name, CAST(0 AS NUMERIC) numi
LIMIT 0
FWIW,我也在BigInt(Number.MAX_SAFE_INTEGER)
NodeJS 中尝试过,但该库无法将其正确发送到 BigQuery - 除非我先将其转换为字符串。
推荐阅读
- sap - SAP HANA 中的每个新用户是否都被分配了一个与用户同名的模式?
- javascript - css 样式无法应用于本机反应
- python - 如何在 Flask 中显示来自 API 的多个图像
- c++ - OpenCV VideoCapture 输出图像剪切到左上角四分之一
- r - 在 Solve 之后使用“Yacas 向量”的右侧作为函数
- swift - 将数据转换为 UnsafeMutablePointer
- c++ - C++ 将 std::map 值设置为结构实例的指针
- python - 需要用 python 捆绑 docker 镜像和 docker rpms
- c++ - 如何捕获构造函数的原型?
- javascript - 如何在 chartist.js 脚本中使用 laravel 数组