copyFrom method

Future<int> copyFrom(
  1. String sql,
  2. Stream<List<int>> data, {
  3. dynamic substitutionValues,
  4. PlaceholderIdentifier placeholderIdentifier = PlaceholderIdentifier.atSign,
  5. int? timeoutInSeconds,
})
inherited

Executa um COPY ... FROM STDIN enviando data (no formato indicado no próprio comando: texto, CSV ou binário) e devolve o número de linhas copiadas.

sql é enviado como está (sem placeholders), exceto quando substitutionValues é informado. Os blocos de data são enviados à medida que chegam, com controle de fluxo; um bloco não pode ser alterado depois de emitido. Se data emitir um erro, o COPY é abortado no servidor (nada é gravado) e o erro é lançado; a conexão continua utilizável. Erros do servidor (por exemplo, uma linha inválida) interrompem o envio e são lançados como PostgreSQLException.

O tempo limite (timeoutInSeconds, ou queryTimeoutInSeconds da conexão) vale para o COPY inteiro; ao expirar, o COPY é abortado.

Para gravar valores Dart, veja copyRows.

Implementation

Future<int> copyFrom(String sql, Stream<List<int>> data,
    {dynamic substitutionValues,
    PlaceholderIdentifier placeholderIdentifier =
        PlaceholderIdentifier.atSign,
    int? timeoutInSeconds}) async {
  final query = _copyQuery(sql, substitutionValues, placeholderIdentifier)
    ..copyInData = data;
  final result = await _enqueue(query,
      timeoutInSeconds: timeoutInSeconds ?? _connection.queryTimeoutInSeconds);
  return result.affectedRowCount;
}