小编Sav*_*tha的帖子

使用shell脚本从管道分隔文件中的字段中删除空格

我是UNIX Shell脚本的新手.

我需要帮助从字段中删除前导和尾随空格.但我需要保留单词之间的空格.

请查看下面的数据示例和所需结果,以了解我的问题.

数据样本:

1-B48980007       |82984788|317      |ALQ|     |4423271    |              0|  |

I0000000000000000000245729|28887957|IL FR    |   |     |00000000573|              0|  |

I0000000000000000000245715|13822348|RPVIPPR  |   |     |00000000298|              0|  |

I0000000000000000000245721|15348717|AN BV    |   |     |00000001526|              0|  |
Run Code Online (Sandbox Code Playgroud)

期望的结果:

1-B48980007|82984788|317|ALQ||4423271|0||

I0000000000000000000245729|28887957|IL FR|||00000000573|0||

I0000000000000000000245715|13822348|RPVIPPR|||00000000298|0||

I0000000000000000000245721|15348717|AN BV|||00000001526|0||
Run Code Online (Sandbox Code Playgroud)

但是我使用以下命令得到如下输出:

sed的/*\| /\|/g'file_name> testOP

管道('|')是我文件中的分隔符.我需要删除管道前后的空格,但需要保留单词之间的空格,例如:"IL FR"和"AN BV".

1-B48980007     |82984788|317|ALQ||4423271|           0||

I0000000000000000000245729|28887957|IL FR|  ||00000000573|            0||

I0000000000000000000245715|13822348|RPVIPPR|    ||00000000298|            0||

I0000000000000000000245721|15348717|AN BV|  ||00000001526|            0||
Run Code Online (Sandbox Code Playgroud)

任何帮助是极大的赞赏.

谢谢你,Savitha

shell sed

4
推荐指数
2
解决办法
2万
查看次数

我们需要在删除之前截断一个大表吗?

据说我们应该在删除之前截断一个大表,它会提高性能.这是真的吗?

oracle

3
推荐指数
2
解决办法
2600
查看次数

合并加入CARTESIAN

Merge加入CARTESIAN总是很危险吗?

我有很多查询,成本从7到40不等,但遵循merge join cartesian执行.

当我的查询成本较低时,我是否应该真的打扰合并加入笛卡儿?

我真的需要帮助.

任何帮助是极大的赞赏.

谢谢你,Savitha

oracle performance sql-tuning

3
推荐指数
1
解决办法
2374
查看次数

在Shell脚本中执行PLSQL块的问题

我试图使用shell脚本删除具有特定后缀(作为参数$ 1传递)的表.

如果选择父表而没有删除子表,我绕过父表并增加异常块中的计数器.

当我在sql开发人员中运行此脚本并将$ 1替换为正确的值时,它可以正常工作.但是当我运行这个shell脚本时,它会被卡住.

你能看一下,让我知道,我在shell脚本中缺少什么?

码:

#!/bin/bash

cat <<ENDDROPNEWTABS >dropnewtabs.sql
set pagesize 100

DECLARE

t_cnt NUMBER;
CURSOR C001
IS
SELECT table_name FROM user_tables WHERE table_name LIKE '%$1%';

BEGIN
BEGIN SELECT COUNT(*) INTO t_cnt FROM user_tables WHERE table_name LIKE '%$1%'; 
END;

WHILE(t_cnt > 0) LOOP
FOR i IN C001 LOOP
BEGIN EXECUTE IMMEDIATE 'DROP TABLE '||i.table_name;
EXCEPTION
WHEN OTHERS THEN
t_cnt := t_cnt+1;
NULL;
END;      
t_cnt := t_cnt-1;
END LOOP;
END LOOP;

END;

exit
ENDDROPNEWTABS

echo "Dropping the tables created …
Run Code Online (Sandbox Code Playgroud)

oracle shell plsql

2
推荐指数
1
解决办法
7343
查看次数

如何使用sql developer备份和恢复数据库(oracle 9i)

能告诉我有没有办法通过Sql Developer备份和恢复Oracle 9i数据库.

虽然我是开发人员并且没有DBA权限,但我被要求这样做.

谢谢,Savitha

database oracle backup

1
推荐指数
1
解决办法
2万
查看次数

Shell脚本中的SQL*PLUS连接问题

我们可以在shell脚本中有多个SQL*PLUS连接吗?

我编写了一个shell脚本,使用SQL*PLUS的COPY命令将表的数据从一个数据库复制到另一个数据库.我没有权限创建Database Link所以,我正在使用COPY命令.

我需要复制大约50个表的数据.当数据集很小时,它会运行并复制所有表的数据.但是当数据集很大时,它会卡住,并且我会在unix机器中获得会话非活动消息.

我考虑拆分语句并将其写成如下:但我收到错误"SP2-0042:未知命令"END1" - 其余行被忽略." 和"SP2-0042:未知命令"END" - 其余行被忽略."

#!/bin/bash
export ORACLE_HOME=/ora00/app/oracle/product/9.2.0.8
export PATH=$PATH:$ORACLE_HOME/bin

args=$#

if [ $args == 1 ]
then
    echo "Shell script started"
else
    echo "Wrong number of arguments"
exit 1  
fi

time_start=`date +%H%M%S`
echo $time_start

    sqlplus -s srcUN/srcPwd@srcSID <<END1       
    COPY from srcUN/srcPwd@srcSID to dstUN/dstPwd@dstSID INSERT tab1 USING SELECT * FROM tab1 WHERE col1 = $1;
    COPY from srcUN/srcPwd@srcSID to dstUN/dstPwd@dstSID INSERT tab2 USING SELECT * FROM tab2 WHERE col1 = $1;
    END1

    sqlplus -s srcUN/srcPwd@srcSID …
Run Code Online (Sandbox Code Playgroud)

oracle shell sqlplus oracle9i

1
推荐指数
1
解决办法
3629
查看次数

标签 统计

oracle ×5

shell ×3

backup ×1

database ×1

oracle9i ×1

performance ×1

plsql ×1

sed ×1

sql-tuning ×1

sqlplus ×1