为了账号安全,请及时绑定邮箱和手机立即绑定

使用带有架构的 PHP API 在大查询中创建表

使用带有架构的 PHP API 在大查询中创建表

PHP
至尊宝的传说 2022-09-17 15:36:25
我正在尝试使用php api在大查询中创建一个表。我可以创建一个没有架构的表,但是当我提供架构时,我会收到错误。看起来我使用了错误的语法,但是我尝试了我能想到的任何格式,但找不到我想要实现的目标的任何示例。我使用字符串文本作为用于测试的字段参数。我的代码看起来像这样:    $bigQuery = new BigQueryClient([        'keyFilePath' => [keyfilepath],        'projectId' => [projectid],        'location' => [location]    ]);    /** @var Dataset $dataSet */    $dataSet = $bigQuery->dataset('my-data-set');    $fieldString = '{"name": "myfield","type": "STRING","mode": "REQUIRED"}' . "\n" . '{"name": "anotherfield", "type": "STRING", "mode": "REQUIRED"}';    $options = [        'fields' => $fieldString    ];    $dataSet->createTable('mytable', $options);这给出了错误:“字段选择无效 {\”名称“:”我的字段“”或者,当我像这样格式化“$fieldString”时:$fieldString = '[{"name": "myfield","type": "STRING","mode": "REQUIRED"}, {"name": "anotherfield", "type": "STRING", "mode": "REQUIRED"}]';我收到错误:无效的字段掩码“[{\”name\“:”myfield“,”类型“:”字符串“,”模式“:”必需“},{”名称“:”另一个字段“,”类型“:”字符串“,”模式“:”必需“}}”。映射键应表示为 [\“some_key\”]。我还尝试先创建表,然后像这样更新它:$table = $dataSet->createTable('mytable');$table->update($options);但我得到同样的错误。即使我使用与此处完全相同的 json 表示形式,问题仍然存在。我在这里做错了什么?更新:实际上,在我切换到字段的字符串文本之前,我首先尝试了以下方法:    $fields = [        ['name'=> 'myfield', 'type' => 'INTEGER', 'mode' => 'REQUIRED'],        ['name'=> 'anotherfield', 'type' => 'INTEGER', 'mode' => 'REQUIRED']    ];    $options = [        'schema' => $fields    ];    $dataSet->createTable('mytable', $options);这将产生错误:“收到的 JSON 有效负载无效。“表”中的未知名称“架构”:Proto 字段不重复,无法启动列表。然后我编辑了代码,如下所示:    $fields = [        ['name'=> 'myfield', 'type' => 'INTEGER', 'mode' => 'REQUIRED'],        ['name'=> 'anotherfield', 'type' => 'INTEGER', 'mode' => 'REQUIRED']    ];    $options = [        'fields' => $fields    ];    $dataSet->createTable('mytable', $options);这给出了:警告:原始代码()期望参数 1 是字符串,数组给定我之前在我的问题中没有提到这一点,因为我认为这无关紧要。事后看来,这可能是,但我的问题仍然存在。
查看完整描述

1 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

没有数组这样的东西$fieldString$fields


喜欢这个:


 $fields = [

    [

        'name' => 'field1',

        'type' => 'string',

        'mode' => 'required'

    ],

    [

        'name' => 'field2',

        'type' => 'integer'

    ],

];

然后


$schema = ['fields' => $fields];

$table = $dataset->createTable($tableId, ['schema' => $schema]);

请参阅此处的示例。


查看完整回答
反对 回复 2022-09-17
  • 1 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信