Pregunta

Tengo que leer los datos de algunos archivos e insertar los datos en diferentes tablas en una base de datos.Es Unix shell script lo suficientemente potente como para hacer el trabajo?

Es fácil hacer el trabajo en shell script o debo ir sobre hacer esto en Java?

¿Fue útil?

Solución

Si los datos que está tratando de importación en un plazo razonable en formato -- delimitado por comas, por ejemplo-y su servidor de base de datos tiene las suficientes utilidades de línea de comandos, esto no debería ser un problema.MySQL tiene la "mysqlimport" herramienta de línea de comandos que admite diversos argumentos que describen el formato de los archivos:

mysqlimport \
    --fields-terminated-by=, \
    --ignore-lines=1 \
    --fields-optionally-enclosed-by='"' < datafile.txt

Pasando los datos a través de perl/sed/awk uno-trazadores de líneas puede ayudar a conseguir que en el formato adecuado, y la secuencia de comandos de shell puede manejar fácilmente preguntar por los nombres de archivo, manejo de argumentos, etc.

El uso de las diversas herramientas de línea de comandos proporcionados por Unix es todo el punto de bash scripting.Perl, mysql, etc.son todos parte de ese conjunto de herramientas.

Otros consejos

es posible :El uso de unix shell script, generar una secuencia de comandos sql y el uso de la cli para la base de datos para ejecutar la secuencia de comandos sql.

si la cantidad de información es lo suficientemente pequeño como se podría construir el SQL en la memoria, le aconsejo en contra de ella, aunque, como nunca se sabe lo que depara el futuro (y que podría ser muy gran cantidad de datos).Mediante una llamada por petición no le permiten beneficiarse de las operaciones masivas que están a veces disponibles.

Por supuesto, usted puede, suponiendo que tienes una línea de comandos de cliente de SQL a mano!Yo lo he hecho w/ Sybase y la isql de la línea de comandos de cliente.Usted puede incluso conseguir inteligente y enviar cosas a través de awk y enviar secuencias de comandos para generar comandos sobre la marcha.Podría no ser la manera más eficiente para hacer todo, pero hay un montón de oportunidades para flexionar sus Unix hacker mojo.

Puede, pero podría ser un poco feo, por ejemplo, si estás utilizando mysql y supongamos que se tiene una cadena SQL almacenado en $sql

echo $sql | mysql -u[user] -p[password] -h[host]

p.s.podría ser una buena idea para que nos digan qué base de datos que está utilizando, para poder ofrecer una asistencia más específica :p

editar:cambió el ejemplo de la línea de lo que en realidad funciona

La tubería es tu amigo.

Por ejemplo, en MySQL:

echo 'load data infile /path/to/the/file into table table_name ...' | 
    mysql -u mysql_user_id -p 

debe hacer el trabajo.

Siempre que su archivo es de alguna manera estructurada, por ejemplo,coma/separados por tabulaciones, etc.

Para más detalles, consulte el manual de su base de datos.

Depende de su Sistema de Gestión de Base.La mayoría de ellos han potente shell herramientas para la importación de datos, haciendo incluso algunos ETL funciones.Estas herramientas podrían ser muy eficaces si son compatibles con la carga a granel - generalmente de Java JDBC no puede hacer eso tan fácilmente.

No puedo probarlo ahora mismo, pero algo como:

echo "INSERT INTO foo (b,a,r) VALUES (1,2,3);" | 
    mysql -u user -psecret -h host database

en un script de shell que debe trabajar.No sé acerca de la obtención de Datos fuera de él, aunque

Shell scripting (Bash o similar) principal intención no es tratar con bases de datos.Ir para Java, o mejor aún, a andar esta oportunidad para aprender los conceptos básicos de un lenguaje de scripting como Python o Ruby.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top