求高手编写Shell脚本,实现调用Linux下的SQLITE,导入CSV文件的功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求高手编写Shell脚本,实现调用Linux下的SQLITE,导入CSV文件的功能相关的知识,希望对你有一定的参考价值。

我在Windows环境下的批处理功能已经实现,现需要把Windows下的批处理改写成Linux下运行的Shell脚本
Windows下的批处理是这样写的:
@echo off
cd /d %1
echo .separator ','>> tem.sql
echo .import %2 %3 >> tem.sql
sqlite3 %4 < tem.sqlde
del tem.sql
exit
改写的Shell脚本如下:
#!/bin/bash
cd $1
echo ".separator ','" >> tem.sql
echo ".import $2 $3" >> tem.sql
sqlite3 $4 < tem.sql
rm -f tem.sql
exit
可是这个Shell脚本执行不出来
求高手实现调用Linux下的SQLITE,导入CSV文件的功能,编写一个Shell脚本,可以运行通过的
我用到的思路是把.separator .import $2 $3 写到一个文件里,然后回写到sqlite,但是在Linux下好像运行不出来,请教高手还有没有别的方法,编写Shell脚本实现这个Linux下,调用Shell脚本导入CSV文件,到SQLITE中

参考技术A O(∩_∩)O~
呵呵,哥们儿,还是原来的问题哦。
看样子问题还是没有解决哦,其实完全可以在原来的问题那里追问嘛~~
因为没有你的运行环境,当时翻译成shell脚本完全是照着原来bat文件的格式按字面意思来的。
可以提供你要导入的文件和数据库吗?不方便的话提供个例子也可以(主要为了说明格式)。
尽管我对sqlite不是很熟悉,但是应该可以尽量帮帮帮忙吧。追问

csv文件的格式:
1,2,3,4,5
6,7,8,9,10
这种格式
http://www.sqlite.org/download.html在这下载Linux版的

追答

刚才我走一遍试了一下:
create_table.sql文件内容如下:
create table test_table
(ID int identity(1,1) primary key,
FirstName varchar(10) not null,
LastName varchar(10) not null,
Password varchar(20) not null);
在sqlite3命令行下载数据库test.db中建立表test_table,命令如下
sqlite3 test.db select * from test_table;
1|kevin|li|123456
2|demi|zhang|111111
sqlite>
证明文件内容被成功导入。
你试一下,看看哪一步出问题,咱们再研究哈

追问

导入的文件名,和表名,回写的库文件名是当做参数传进来的,为什么我试的时候,老提示文件不存在呢?还有这个Segmentation fault,:command 什么什么 我在公司连上Linux服务器试的,是怎么回事?,可否把文件名,和表名,回写的库文件名是当做参数传进来的,改写后的Shell脚本贴出来,我看一下,./test.sh . a.csv test_table test.db,. a.csv 有个点什么意思啊

追答

所有的文件都已经贴出来咯~~
./test.sh . a.csv test_table test.db
这句命令里面,
test.sh就是先前的脚本,原样一点都没改
. 代表当前目录
a.csv是你要导入的数据库表中的文件
test_table是要导入的表
test.db是包含表test_table的数据库
你可以建个目录,试一下这个例子能不能成功,可以的话在试试你的
有什么问题立即追问或者hi我

追问

那如果我要在sqlite安装目录建两个目录csv db,和sqlite同级,用以存放文件,这个要怎么改一下?csv和db和sqlite平级目录,你的test.sh是怎么写的? 是不是同样的shell脚本,在你那里可以运行成功,我这就有问题

追答

用which命令查看sqlite3结果如下
root@ubuntu:~/share/linux_sh/testdir# which sqlite3
/usr/bin/sqlite3
可见sqlite3相当于一个命令,在/usr/bin下创建目录不合适吧
创建目录直接mkdir就好了哈
可否在hi里面聊?更方便些

参考技术B sqlite 导入 csv数据很容易:
tim@tim-Vostro-200:~/workspace$ cat test.csv
1,Tim Wang,yumin.wang@person.com,1350xxxxxx
2,Bruce Wang,yuhui.wang@person.com,
3,Kun Bai,kun.bai@person.com,
tim@tim-Vostro-200:~/workspace$ sqlite3
SQLite version 3.7.7 2011-06-23 19:49:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table person (id int, name varchar(32), email varchar(64), mobile varchar(16));
sqlite> .sep ","
sqlite> .import test.csv person
sqlite> select * from person;
1,Tim Wang,yumin.wang@person.com,1350xxxxxx
2,Bruce Wang,yuhui.wang@person.com,
3,Kun Bai,kun.bai@person.com,
sqlite> .q
tim@tim-Vostro-200:~/workspace$
参考技术C echo ".separator ','" >> tem.sql
改成 echo “.separator ,”>> tem.sql
最后的exit多余。
另:sqlite3是可执行的么?
一般的,分步执行就能知道哪里不合适的。
参考技术D 我一会发给你本回答被提问者采纳 第5个回答  2012-02-06 。。。。。。。。。。。。。。。。。。沙发···

如何在Windows实现远程调用Linux下的shell指令

求一个实现方法,请高人指教。
想通过windows的cmd或者Vb语言,来实现远程调用Linux下一个Shell指令。
等待到这个shell指令结束后,将执行结果返回到Windows。

参考技术A

    可以用ssh协议远程连接linux服务器就可以使用linux服务器上的shell指令了,下载个xshell软件,通过linux的用户名和密码 IP 就可以连接上了

    也可以安装开源软件gow,在网上就可以下载到,这个软件是在windows下运行linux指令,不知道你是否需要

    通过以上两种方法均可以运行linux下的shell

参考技术B 办不到。
只能登陆到Linux(可以在Windows下远程登录),然后执行相应命令,或给Windows安装专门的移植程序(微软官方为Vista以上操作系统制作了Subsystem for UNIX-based Applications)。
参考技术C 可以在windows下通过telnet连接到Linux系统,然后怎么操作都行,包括执行shell指令。 参考技术D 通过console连接到linux主机

以上是关于求高手编写Shell脚本,实现调用Linux下的SQLITE,导入CSV文件的功能的主要内容,如果未能解决你的问题,请参考以下文章

如何在Windows实现远程调用Linux下的shell指令

Java在linux上调用shell脚本

编写shell脚本sum求1-100累加和

求iphone上使用的shell工具,以及shell命令的使用方法 请高手详解,谢谢

编写一个shell脚本文件,实现以下功能:

shell自动部署linux环境下的组件安装配置