Este tópico descreve problemas comuns e soluções para importação e exportação de dados no AnalyticDB for MySQL.
A menos que uma linha de produtos seja especificada, o problema se aplica apenas ao AnalyticDB for MySQL (Data Warehouse Edition).
Perguntas frequentes
Como interromper uma tarefa assíncrona de importação ou exportação?
Como usar SQL para visualizar tarefas de importação em execução no banco de dados atual?
Existem cobranças separadas para o recurso Data Integration (APS) de um cluster Lakehouse Edition?
Como resolver o erro "endpoint unreachable" ao criar uma tabela externa do MaxCompute?
Como resolver o erro "Project not found - 'xxx'" ao criar uma tabela externa do MaxCompute?
Como resolver o erro "Query Exceeded Maximum Time Limit" ao importar dados do MaxCompute?
Como resolver o erro "cant submit job for job queue is full" ao importar dados do MaxCompute?
Como resolver o erro "Receive error response with code 500" ao consultar dados no MaxCompute?
Como resolver um "Query execution error" ao consultar dados no MaxCompute?
Como importar dados com tipo de dado array do MaxCompute para um cluster AnalyticDB for MySQL?
Como otimizar a velocidade de importação de dados do MaxCompute?
Ao usar o script adb-import.sh para importar dados locais, como parametrizar o script de importação?
Cancelar uma tarefa assíncrona de importação ou exportação
Acesse o console do AnalyticDB for MySQL. Na página Diagnostics and Optimization, clique em aba Import/Export Jobs. Localize a tarefa desejada e copie seu Asynchronous Job Name. Em seguida, execute o comando CANCEL JOB "${asynchronous job name}" para cancelar a tarefa. Para mais informações, consulte enviar tarefas de importação assíncronas.
Visualizar tarefas de importação em execução
Execute a seguinte consulta:
SELECT * FROM INFORMATION_SCHEMA.kepler_meta_async_jobs where status = "RUNNING"
Baixo desempenho na importação de dados via JDBC
Garanta que a fonte de dados gere dados em uma taxa suficiente. Se os dados forem lidos de outros sistemas ou arquivos, verifique se há gargalos de saída no cliente.
Assegure que o processamento de dados seja eficiente e acompanhe a geração de dados. Isso ajuda a manter uma fila suficiente de dados prontos para importação no AnalyticDB for MySQL.
Verifique se a máquina cliente possui recursos de sistema suficientes. Analise métricas como utilização de cpu e E/S de disco para identificar possíveis gargalos.
Cobranças de link para ingestão de dados (APS)
Não. O recurso de ingestão de dados (APS) em si é gratuito. No entanto, as tarefas do APS são executadas em um grupo de recursos no seu cluster e consomem recursos faturáveis.
Endereço interno ou público para tabelas externas do oss
Use um endereço interno ao criar uma tabela externa do oss. Os nós de backend no AnalyticDB for MySQL acessam o oss pela rede interna, não pela rede pública.
Erro 'Endpoint unreachable' para tabelas externas do MaxCompute
Causa: O erro 'endpoint unreachable' ocorre quando o endpoint especificado para uma tabela externa do MaxCompute está inacessível.
Solução: Ative a rede ENI, substitua o endpoint na instrução CREATE TABLE pelo endpoint de VPC da região da instância e execute a instrução novamente.
Ativar ou desativar a rede ENI interrompe a conectividade do banco de dados por aproximadamente dois minutos, período em que as operações de leitura e gravação ficam indisponíveis. Avalie cuidadosamente o impacto potencial antes de ativar ou desativar a rede ENI.
Acesse o console do AnalyticDB for MySQL. Navegue até . Na seção Network Information , ative o switch da rede ENI.
Erro 'Odps external table endpoint should not contain special character'
Causa: O endpoint está configurado incorretamente.
Solução: Substitua o endpoint na instrução CREATE TABLE pelo endpoint de VPC da região da instância e execute a instrução novamente.
Erro "Project not found - 'xxx'"
-
Causa: O projeto especificado não existe no MaxCompute ou o nome do projeto está escrito incorretamente.
Solução: Corrija o nome do projeto na sua instrução de criação de tabela e tente criar a tabela externa novamente.
-
Causa: O projeto existe no MaxCompute, mas não está na mesma região do seu cluster AnalyticDB for MySQL.
Solução: Certifique-se de que seu cluster AnalyticDB for MySQL e o projeto MaxCompute estejam na mesma região e tente criar a tabela externa novamente.
Erro na importação de dados do MaxCompute: "Rollback this write and commit one row at a time"
Causa: Este erro ocorre ao importar dados com o DataX devido a uma limitação na camada de conexão do AnalyticDB for MySQL.
Solução: Adicione o parâmetro rewriteBatchedStatements=false à sua string de conexão JDBC e tente importar novamente.
Erro "Query Exceeded Maximum Time Limit"
Causa: Este erro ocorre porque a importação de dados de uma tabela grande do MaxCompute excede o tempo limite para uma operação INSERT no AnalyticDB for MySQL.
Solução: Modifique o parâmetro INSERT_SELECT_TIMEOUT e tente importar novamente. Para detalhes, consulte parâmetros config e hint.
Erro: "can't submit job: job queue is full"
Causa: O número de tarefas assíncronas simultâneas no seu cluster AnalyticDB for MySQL excedeu o limite. Você pode enviar um ticket para verificar o limite de simultaneidade do seu cluster.
Solução:
Aguarde a conclusão das tarefas assíncronas enviadas e reenvie a tarefa de importação assíncrona. Para verificar o status de uma tarefa assíncrona, consulte enviar tarefas de importação assíncronas.
Você pode enviar um ticket para solicitar um limite maior de simultaneidade para o seu cluster.
"Query execution error: odps partition num: 192 > 191, specific odps partitions" ao importar dados do MaxCompute
Causa: O número de partições em uma única operação de importação excede o limite para um cluster AnalyticDB for MySQL.
Solução: Com base no número específico de partições na tabela do MaxCompute, adicione um Hint antes da instrução SQL /*RC_INSERT_ODPS_MAX_PARTITION_NUM=<value>*/ para ajustar o limite do número de partições.
A função max_pt() requer uma tabela particionada
Causa: Este erro ocorre quando você aplica a função MAX_PT() a uma tabela externa do MaxCompute não particionada.
Solução: Certifique-se de que a tabela do MaxCompute seja uma tabela particionada e tenha pelo menos uma partição. Em seguida, recrie a tabela externa do MaxCompute e consulte-a usando a função MAX_PT().
Erro ErrorCode=NoSuchPartition ao consultar dados do MaxCompute
Causa: A tabela externa do MaxCompute não possui partições.
Solução: Garanta que a tabela do MaxCompute contenha pelo menos uma partição Operações de partição. Depois, recrie a tabela externa e consulte os dados.
Erro Code 500 ao consultar dados do MaxCompute
Causa: O AnalyticDB for MySQL usa o mecanismo nativo para executar instruções SQL, mas o mecanismo nativo não suporta tabelas externas do MaxCompute.
Solução: Adicione o hint /*native_engine_task_enabled=false*/ no início da instrução SQL para desativar o mecanismo nativo e executar a instrução usando o mecanismo Java.
Erro de execução de consulta ao consultar dados do MaxCompute
-
Causa 1: O AccessKey não consegue ler a tabela do MaxCompute devido a configurações de permissão incorretas no MaxCompute.
Solução: Atualize as permissões de leitura e gravação no MaxCompute e execute a consulta novamente.
-
Causa 2: O esquema ou os nomes das colunas da tabela do AnalyticDB for MySQL não correspondem aos da tabela do MaxCompute.
Solução: No AnalyticDB for MySQL, recrie a tabela externa para corresponder ao esquema e aos nomes das colunas da tabela do MaxCompute. Em seguida, execute a consulta novamente.
-
Causa 3: A partição especificada do MaxCompute não existe.
Solução: Corrija a partição do MaxCompute especificada na sua consulta e execute-a novamente.
-
Causa 4: A tabela do MaxCompute contém muitos arquivos pequenos.
Solução: Mescle os arquivos pequenos no MaxCompute e execute a consulta novamente. Use a instrução de exemplo abaixo. Para mais detalhes, consulte Mesclar arquivos pequenos.
ALTER TABLE tablename [PARTITION] MERGE SMALLFILES;
Importar array<string> do MaxCompute para o AnalyticDB for MySQL
Causa: Não é possível importar diretamente dados array<string> para o AnalyticDB for MySQL porque tabelas externas do MaxCompute não suportam tipos aninhados.
Solução: Exporte os dados do MaxCompute para o oss no formato Parquet e use o AnalyticDB for MySQL para ler os dados Parquet do oss.
Otimizar a velocidade de importação de dados do MaxCompute
-
Se a carga nos nós de armazenamento estiver baixa, ajuste o valor de
SQL_OUTPUT_BATCH_SIZEe reimporte os dados usando a seguinte instrução:set adb_config SQL_OUTPUT_BATCH_SIZE = 6000; -
Se a tabela do MaxCompute tiver muitas partições, defina
ENABLE_ODPS_MULTI_PARTITION_PART_MATCHcomo false e reimporte os dados usando a seguinte instrução:set adb_config ENABLE_ODPS_MULTI_PARTITION_PART_MATCH=false;
Se o problema persistir, envie um ticket para o Suporte Técnico da alibaba cloud.
Falha na sobrescrita de dados para tabelas externas do MaxCompute
Tabelas externas do MaxCompute não suportam sobrescrita de dados.
Erro "Slot Quota Exceeded" para INSERT INTO SELECT no MaxCompute
Causa: Os slots necessários para a operação de gravação excedem a cota de slots.
Solução: Use um dos seguintes métodos.
Utilize um grupo de recursos exclusivo para integração de dados. Ele fornece uma cota de slots maior do que um grupo de recursos público para integração de dados.
A simultaneidade padrão para uma tarefa
INSERT INTO SELECTé 16. Reduza a simultaneidade adicionando o hint/*TASK_WRITER_COUNT=<value>*/no início da instrução SQL. Ovaluedeve ser um número inteiro maior que 0.
Erro de controle de fluxo ao gravar em tabelas externas do MaxCompute
Causa: Ao gravar dados em uma tabela externa do MaxCompute, se a operação criar novas partições, o MaxCompute chama a operação createPartition. Criar partições com muita frequência aciona o mecanismo de limitação no MaxCompute, o que causa este erro.
Solução: Verifique se sua tarefa INSERT INTO SELECT grava dados em várias partições simultaneamente. Se sim, adicione o hint /*TASK_WRITER_COUNT=<value>*/ à sua instrução SQL para reduzir a simultaneidade. O valor deve ser um número inteiro maior que 0. Se isso não resolver o problema, envie um ticket.
Incompatibilidade na contagem de registros
Causa: O AnalyticDB for MySQL remove automaticamente registros com chaves primárias duplicadas.
Solução: Verifique se há chaves primárias duplicadas nos seus dados de source do MaxCompute.
Lidando com tipos de dados não suportados
Se um banco de dados de source contiver tipos de dados não suportados pelo AnalyticDB for MySQL, como tipos de dados geoespaciais, o AnalyticDB for MySQL descarta as colunas correspondentes durante a inicialização do esquema.
Para obter uma lista de tipos de dados suportados, consulte Tipos de Dados Básicos e Tipos de Dados Complexos.
Alterar tipos de dados durante a sincronização
Durante a sincronização de dados, é possível modificar os tipos de dados das colunas em uma tabela de source. Este recurso suporta apenas alterações entre tipos de dados inteiros ou entre tipos de dados de ponto flutuante. Só é permitido alterar um tipo de dado para outro com um intervalo mais amplo, como de precisão simples para precisão dupla.
Tipos de dados inteiros: É possível alterar de um tipo menor para um maior entre
Tinyint,Smallint,InteBigint. Por exemplo, alterar deTinyintparaBiginté suportado, mas alterar deBigintparaTinyintnão é.Tipos de dados de ponto flutuante: É possível alterar de
FloatparaDouble, mas não deDoubleparaFloat.
Sincronização de dados do DTS para um cluster AnalyticDB for MySQL: Erros decorrentes de alterações de tipo de dado
Erros:
-
‘id' is LONG type, Can't change column type to DECIMAL -
modify precision is not supported, col=id, type decimal, old=11, new=21
Causa: Este erro ocorre porque o DTS não suporta esta operação DDL quando você altera o tipo de dado de uma tabela de source durante a sincronização. Para mais informações, consulte O DTS suporta a alteração do tipo de dado de uma tabela de source durante a sincronização de dados para um cluster AnalyticDB for MySQL?
Solução:
Sincronização de objetos específicos: Ressincronize a tabela. Para isso, remova a tabela dos objetos de sincronização, exclua-a do banco de dados de destino e adicione-a novamente. O DTS então realiza uma nova sincronização completa e migração de esquema, contornando a operação DDL não suportada.
Sincronização completa do banco de dados: No AnalyticDB for MySQL, crie uma nova tabela com um nome diferente, mas com a mesma estrutura da tabela de source. Use
INSERT INTO SELECTpara copiar os dados da tabela original para a nova tabela. Em seguida, exclua a tabela original que apresenta o erro, renomeie a nova tabela para o nome original e reinicie a tarefa do DTS.
DTS para AnalyticDB for MySQL: resolver erros de valor de data inválido
Mensagem de erro:
Cannot parse "2013-05-00 00:00:00": Value 0 for dayOfMonth must be in the range [1,31]]
Causa: O AnalyticDB for MySQL não suporta a gravação de valores de data inválidos.
Solução:
Se a tarefa de sincronização estiver na fase de inicialização completa, corrija o valor na tabela de source. Por exemplo, altere '2013-05-00 00:00:00' para '2013-05-01 00:00:00'.
Se a tarefa de sincronização estiver na fase de sincronização incremental, remova a tabela do objeto de sincronização, corrija o valor inválido na tabela de source, adicione a tabela de volta ao objeto de sincronização e reinicie a tarefa de sincronização.
Se a tarefa de sincronização estiver na fase de sincronização incremental de uma sincronização completa de banco de dados, entre em contato com o Suporte Técnico da alibaba cloud para ativar um switch que permita gravar valores de data inválidos como null.
DTS para AnalyticDB for MySQL: Erro ao sincronizar tabelas sem chave primária
Mensagem de erro:
DTS-077004: Record Replicator error. cause by [[17003,2020051513063717201600100703453067067] table not exist => xxx_table]
Causa: O AnalyticDB for MySQL não suporta a sincronização de tabelas sem chaves primárias.
Solução: Para resolver este erro, crie manualmente a tabela com uma chave primária no banco de dados de destino e reinicie a tarefa do DTS.
Sincronização do DTS: Erro "Default value is too long"
Mensagem de erro:
default value is too long
Solução: Envie um ticket para solicitar que o suporte técnico da alibaba cloud atualize seu cluster AnalyticDB for MySQL para a versão mais recente.
Sincronização do DTS para AnalyticDB for MySQL: Resolver erro de tamanho de registro (>16 MB)
Erro:
com.mysql.jdbc.PacketTooBigException: Packet for query is too large (120468711 > 33554432). You can change this value on the server by setting the max_allowed_packet' variable.
Solução: Envie um ticket para solicitar ao Suporte Técnico da alibaba cloud que atualize seu cluster AnalyticDB for MySQL para a versão mais recente.
DTS para AnalyticDB for MySQL: Erro de espaço em disco insuficiente
Mensagem de erro:
disk is over flow
Solução: Exclua dados desnecessários para liberar espaço em disco ou entre em contato com o Suporte Técnico da alibaba cloud para aumentar a escala do cluster AnalyticDB for MySQL. Assim que houver espaço em disco suficiente, reinicie a tarefa do DTS.
Resolver erros do DTS: Tabelas ou colunas ausentes
Mensagem de erro:
table not exist => t1
Solução: Na configuração do DTS, certifique-se de que a opção para sincronizar todas as instruções DDL esteja selecionada.
Valores ausentes na mesclagem de várias tabelas
Erro:
No value present
Causa: Em uma mesclagem de várias tabelas, este erro ocorre se uma alteração de esquema for feita em uma tabela de source, como adicionar um novo campo. Essa alteração cria uma incompatibilidade de esquema entre as tabelas de source, o que impede o DTS de gravar dados na tabela de destino.
Solução: Envie um ticket para o suporte técnico do DTS.
Hífens em nomes de banco de dados, tabelas ou colunas
O AnalyticDB for MySQL não permite hífens (-) em nomes de bancos de dados, tabelas ou colunas. Para garantir uma sincronização de dados bem-sucedida, o DTS substitui automaticamente os hífens (-) por sublinhados (_).
Se a sincronização de dados falhar devido a outros problemas com nomes de bancos de dados, tabelas ou colunas, como aqueles contendo espaços ou caracteres chineses, entre em contato com o suporte técnico da alibaba cloud.
Para mais informações sobre os limites de uso do AnalyticDB for MySQL, consulte limites de uso.
Solucionar latência de dados durante a sincronização do DTS
O link de sincronização do DTS usa a especificação
mediumpor padrão. Se o banco de dados de source estiver sob uma carga pesada de gravação, talvez seja necessário atualizar a configuração da instância para obter o máximo desempenho.Para uma tabela sem chave primária, a coluna selecionada para atuar como tal pode causar atualizações de
hot row, que são muito lentas. Para resolver esse problema, envie um ticket para o AnalyticDB for MySQL.Quando o desempenho de gravação de um cluster AnalyticDB for MySQL atinge um gargalo, é necessário atualizar as especificações do AnalyticDB for MySQL.
Baixo TPS de gravação durante a importação de dados do dataworks
Uma carga insuficiente no cliente pode levar a baixa utilização de cpu, utilização de E/S de disco e tempo de resposta de gravação no cluster. Embora o servidor de banco de dados possa consumir rapidamente os dados recebidos, o baixo volume de dados resulta em um TPS de gravação menor que o esperado. Para melhorar o desempenho, aumente o batch size e a Maximum Concurrency da tarefa de importação. O desempenho da importação de dados geralmente escala linearmente com a carga do lado do cliente.
Skew de dados no AnalyticDB for MySQL proveniente de importação do dataworks
Quando ocorre skew de dados em uma tabela de destino, alguns nós do cluster ficam sobrecarregados, o que degrada o desempenho da importação. Nessa situação, a utilização de cpu e a E/S de disco do cluster são baixas, mas o tempo de resposta de gravação é alto. Identifique a tabela com skew na página Diagnostics and Optimization > Data Modeling Diagnostics. Para resolver esse problema, redesenhe a estrutura da tabela e reimporte os dados. Para mais informações, consulte Design de estrutura de tabela.
Identificar gargalos no cliente para adb-import.sh
Um gargalo no lado do cliente impede que você maximize a carga do banco de dados. Use os seguintes métodos para identificar gargalos no cliente ou em seu servidor host:
Acesse o console do AnalyticDB for MySQL. No painel de navegação à esquerda, clique em Monitoring Information e Diagnostics and Optimization para revisar as métricas de desempenho em busca de possíveis gargalos.
Execute os seguintes comandos no cliente ou em seu servidor host para identificar gargalos.
|
Comando |
Descrição |
|
top |
Visualiza o uso de cpu. |
|
free |
Visualiza o uso de memória. |
|
vmstat 1 1000 |
Visualiza a carga geral. |
|
dstat -all --disk-util ou iostat 1 1000 |
Visualiza a largura de banda de leitura e utilização do disco. |
|
jstat -gc <pid> 1000 |
Visualiza detalhes de coleta de lixo (GC) para o processo Java da ferramenta de importação. Se o GC for frequente, aumente o tamanho da memória heap no parâmetro |
Parametrizar o script adb-import.sh
Se seus arquivos de importação usam delimitadores de linha e coluna consistentes, modifique o script para aceitar tableName e dataPath como parâmetros. Isso permite usar um único script para importar dados em várias tabelas, passando diferentes nomes de tabelas e caminhos de arquivos como argumentos.
tableName=$1
dataPath=$2
Execute a importação com parâmetros:
# sh adb-import.sh table_name001 /path/table_001
# sh adb-import.sh table_name002 /path/table_002
# sh adb-import.sh table_name003 /path/table_003
Executar adb-import.sh em segundo plano
Para executar o programa de importação em segundo plano, use o seguinte comando:
# nohup sh adb-import.sh &
Após o início do programa, verifique o log executando o seguinte comando. Se o log contiver uma pilha de exceções, isso indica um erro que precisa ser solucionado.
# tail -f nohup.out
Para verificar se o processo de importação ainda está em execução, use o seguinte comando:
# ps -ef|grep import
Ignorar linhas com erro com adb-import.sh
As linhas com erro da ferramenta de importação se enquadram nas duas categorias a seguir:
-
Erros de execução de SQL.
Para este tipo de erro, ignore a linha de erro definindo o parâmetro
ignoreErrors=true. Nesse caso, o resultado da execução imprimirá o arquivo de erro detalhado, o número da linha inicial (comobatchSizeestá definido, a linha de erro estará dentro debatchSizelinhas após o número da linha inicial) e o SQL que falhou ao executar. -
Incompatibilidade na contagem de colunas.
Se um arquivo contiver um número inesperado de colunas, a ferramenta de importação interrompe imediatamente o processamento e imprime uma mensagem de erro. Como esse erro indica um arquivo malformado, ele não pode ser ignorado. Inspecione e corrija o arquivo manualmente. A ferramenta imprime uma mensagem de erro semelhante à seguinte:
[ERROR] 2021-03-22 00:46:40,444 [producer- /test2/data/lineitem.csv.split00.100-41] analyticdb.tool.ImportTool (ImportTool.java:591) -bad line found and stop import! 16, file = /test2/data/tpch100g/lineitem.csv.split00.100, rowCount = 7, current row = 3|123|179698|145|73200.15|0.06|0.00|R|F|1994-02-02|1994-01-04|1994-02- 23|NONE|AIR|ongside of the furiously brave acco|
**Solução de problemas de falhas na importação com adb-import.sh**
Para identificar rapidamente a causa de uma falha na importação, use os seguintes métodos para restringir o escopo da solução de problemas:
-
Quando uma importação falha, a ferramenta de importação do AnalyticDB for MySQL imprime um log de erros detalhando a causa da falha. Por padrão, a instrução SQL no log é truncada para 1.000 caracteres. Para visualizar a instrução completa, aumente o parâmetro
failureSqlPrintLengthLimit. Por exemplo, você pode defini-lo como 1.500:printErrorSql=true failureSqlPrintLengthLimit=1500; -
A ferramenta de importação processa instruções SQL em lotes, e um único lote, controlado pelo parâmetro
batchSize, pode conter milhares de linhas. Isso dificulta a identificação da linha que causa o erro. Para isolar a linha problemática, reduza o parâmetrobatchSize. Por exemplo, você pode defini-lo como 10:batchSize=10; -
Se você identificou qual divisão de arquivo contém um erro, reproduza o erro importando apenas esse arquivo. Para fazer isso, modifique o parâmetro
dataPathpara apontar diretamente para o arquivo problemático:dataPath=/u01/this/is/the/directory/where/product_info/stores/file007;
Executar a ferramenta de importação no Windows
Ainda não há um script em lote disponível para Windows. Para executar a ferramenta de importação, chame o arquivo JAR diretamente:
usage: java -jar adb-import-tool.jar [-a <arg>] [-b <arg>] [-B <arg>] [-c <arg>]
[-D <arg>] [-d <arg>] [-E <arg>] [-f <arg>] [-h <arg>] [-I <arg>]
[-k <arg>] [-l <arg>] [-m <arg>] [-n <arg>] [-N <arg>] [-O <arg>]
[-o <arg>] [-p <arg>] [-P <arg>] [-Q <arg>] [-s <arg>] [-S <arg>]
[-t <arg>] [-T <arg>] [-u <arg>] [-w <arg>][-x <arg>] [-y <arg>] [-z <arg>]
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
O endereço de conexão do cluster AnalyticDB for MySQL. |
|
|
A conta de banco de dados do cluster AnalyticDB for MySQL. |
|
|
|
A senha da conta de banco de dados do AnalyticDB for MySQL. |
|
|
|
O número da porta do cluster AnalyticDB for MySQL. |
|
|
|
Nome do banco de dados do cluster AnalyticDB for MySQL. |
|
|
|
O caminho absoluto do arquivo ou pasta de source. Os seguintes cenários são suportados:
|
|
|
|
O nome da tabela de destino. |
|
|
|
Não |
Gera um arquivo de sinalização após a conclusão da importação. O valor padrão é uma string vazia, o que significa que nenhum arquivo é gerado. Para gerar um arquivo de sinalização, especifique seu nome. Por exemplo, |
|
|
O número de tuplas de valores por instrução de gravação em lote, como Nota
Para um desempenho ideal de gravação em lote, defina este valor entre 1024 e 4096. |
|
|
|
Ativa a criptografia de senha. Padrão: false. |
|
|
|
Imprime a contagem real de linhas da tabela de destino após a importação de cada arquivo. Padrão: false. |
|
|
|
Ignora a linha de cabeçalho de um arquivo. Padrão: false. |
|
|
|
Escapa caracteres de barra invertida ( Nota
O escape de caracteres afeta o desempenho de análise no lado do cliente. Se seus arquivos de source não contiverem esses caracteres, defina este parâmetro como false. |
|
|
|
Ignora lotes com falha durante a importação de dados. Padrão: false. |
|
|
|
O número de linhas a serem ignoradas desde o início do arquivo. Isso é semelhante a |
|
|
|
Delimitador de coluna. O AnalyticDB for MySQL usa o caractere visível |
|
|
|
O número máximo de arquivos a serem lidos em paralelo ao importar de uma pasta. Padrão: |
|
|
|
Especifica se deve definir |
|
|
|
Imprime a instrução SQL que causou um erro. Padrão: true. |
|
|
|
O tamanho do pool de conexões do banco de dados AnalyticDB for MySQL. Padrão: 2. |
|
|
|
A codificação do arquivo. Valores válidos: GBK, UTF-8. Padrão: UTF-8. |
|
|
|
Imprime instruções INSERT sem executá-las. Padrão: false (as instruções são executadas). |
|
|
|
Separador de linha. O AnalyticDB for MySQL usa o caractere visível |
|
|
|
Imprime o rastreamento de pilha quando ocorre um erro e |
|
|
|
O número de buffers para comandos INSERT SQL. Isso permite pipeline e a separação de E/S e computação quando comandos INSERT SQL são enviados para o AnalyticDB for MySQL, o que melhora o desempenho do cliente. Valor padrão: 128. |
|
|
|
Inclui nomes de colunas na instrução |
|
|
|
O comprimento máximo de uma instrução SQL com falha a ser impressa. Padrão: 1000. |
|
|
|
Parâmetros adicionais de conexão com o banco de dados. Padrão: Exemplo: |
Exemplos:
-
Exemplo 1: Importar um único arquivo usando parâmetros padrão:
java -Xmx8G -Xms8G -jar adb-import-tool.jar -hyourhost.ads.aliyuncs.com -uadbuser -ppassword -P3306 -Dtest --dataFile /data/lineitem.sample --tableName LINEITEM -
Exemplo 2: Importar todos os arquivos em uma pasta, otimizado para throughput máximo:
java -Xmx16G -Xms16G -jar adb-import-tool.jar -hyourhost.ads.aliyuncs.com -uadbuser -ppassword -P3306 -Dtest --dataFile /data/tpch100g --tableName LINEITEM --concurrency 64 --batchSize 2048
Se minha instância rds de source foi liberada, como importo seu arquivo de backup SQL para o AnalyticDB for MySQL?
O AnalyticDB for MySQL não suporta a execução direta de arquivos de dump SQL usando o cliente de linha de comando mysql, pois as instruções DDL no dump podem ser sintaticamente incompatíveis. Se sua instância rds de source foi liberada e apenas o arquivo de backup SQL permanece, conclua a importação de dados seguindo estes dois documentos em sequência:
Etapa 1: Restaurar o arquivo SQL para um banco de dados MySQL autogerenciado. Em uma instância ECS ou em um ambiente local, configure uma instância MySQL e use o cliente de linha de comando mysql para importar o arquivo SQL para o banco de dados MySQL autogerenciado. Para mais informações, consulte Restaurar dados do rds para um banco de dados autogerenciado a partir de um arquivo CSV ou SQL.
Etapa 2: Importar dados do MySQL autogerenciado para o AnalyticDB for MySQL. Após os dados serem restaurados para o banco de dados MySQL autogerenciado, use tabelas externas para importar os dados para o cluster AnalyticDB for MySQL. Para mais informações, consulte Importar dados de um banco de dados MySQL autogerenciado.