Importação em lote de arquivos .sql

5

Eu tenho um monte de arquivos .sql em um diretório que eu preciso importar. Embora eu possa fazê-lo manualmente, para fins de script, preciso aplicá-los em massa. Como posso fazer isso? Que combinação de opções e comandos eu preciso?

O comando mysqlimport é assim:

mysqlimport [options] db_name textfile1 [textfile2 ...]

Eu preciso adicionar todos os arquivos de texto ao final. Eu preferiria um comando que um loop for complicado, se possível.

Alguma sugestão?

    
por TheLQ 10.12.2010 / 23:20

1 resposta

6

Use curingas:

mysqlimport [options] db_name /path/to/sql/files/*

Se houver arquivos não-SQL nesse diretório, o subconjunto de arquivos que você deseja importar pode ter uma parte do nome do arquivo em comum. Por exemplo, se todos terminarem em .sql , o comando se torna:

mysqlimport [options] db_name /path/to/sql/files/*.sql

Se você vem do DOS / Windows, pode não estar claro para você por que isso funciona. Em sistemas Unixy, o shell expande curingas, portanto, o programa ( mysqlimport neste caso) não precisa ter seu próprio processamento. É por isso que a mensagem de uso que você cita diz esperar que os arquivos sejam fornecidos individualmente: é assim que os arquivos serão exibidos se você usar comandos como os acima. O programa só vê o curinga se o padrão não corresponder a nada; o shell o transmite literalmente ao programa, não tendo melhor maneira de lidar com ele.

    
por 10.12.2010 / 23:37