题
我已经读取数据的一些文件,并将数据插入不同的表格中的数据库。是Unix shell script强大到足以做的工作?
是很容易做的工作,在脚本,或者我应该去这样做在Java?
解决方案
如果数据你是在试图进口是合理的格式--逗号分隔,例如--和数据库服务器具有合理的命令行事业,这应该没有问题。MySQL有"mysqlimport"的命令行的工具,将接受的各种参数,描述了格式的文件:
mysqlimport \
--fields-terminated-by=, \
--ignore-lines=1 \
--fields-optionally-enclosed-by='"' < datafile.txt
通过数据通过perl/sed/awk一套可帮助获得适当的格式,以及脚本可以很容易地处理促使用的文件,处理参数,等等。
使用的各种命令行工具提供Unix是整个点砸向脚本。Perl,mysql,等等。是的所有的一部分,工具包。
其他提示
它是可能的:使用unix壳脚本生成sql脚本,并使用cli的数据库,以执行sql脚本。
如果信息量很小,你能建立SQL在记忆中,我建议反对它,虽然因为你永远不知道未来会发生什么(这可能是非常大量的数据)。使用一个电话,每个请求并不能让你受益于散装行动有时可用。
你当然可以,假设你已经有了一个命令行SQL客户方便!我已经做了w/Sybase和isql命令行客户。你甚至可以获得聪明,发送的东西通过awk和发脚本生成的命令。它可能不是最有效的方式来做的一切,但还有很多的机会弯曲你的Unix黑客的魔力.
你可以的,但它可能有点丑陋的,例如如果你使用mysql和假设有一个SQL串存在$sql
echo $sql | mysql -u[user] -p[password] -h[host]
p.s.这可能是一个很好的想法告诉我们什么数据库使用,所以我们可以提供更具体的帮助。
编辑:改变例行使它的实际工作
管道是你的朋友。
例如,在MySQL:
echo 'load data infile /path/to/the/file into table table_name ...' |
mysql -u mysql_user_id -p
应该做的工作。
提供的文件不知怎的,例如结构化逗/tab分离等。
详细情况,检查该手册的数据库。
这取决于你的数据库管理系统。他们中的大多数具有强大的外壳工具,用于进口数据,这样做甚至一些ETL功能。这些工具可能是,即使非常高,如果他们支持批装载-通常Java JDBC不能这么做那么容易。
不能测试它的权利,但是这样的:
echo "INSERT INTO foo (b,a,r) VALUES (1,2,3);" |
mysql -u user -psecret -h host database
在一个脚本应该工作.不知道关于获得数据,虽然它
壳scripting(庆典或类似的)的主要目的不是为了处理数据库。去Java或更好的是,骑这个机会,学习基础知识的一个脚本语言喜欢蟒蛇或红宝石。