数据库文件如何删除
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库文件如何删除相关的知识,希望对你有一定的参考价值。
参考技术A 问题一:数据库满了怎么删除 首先看数据库文件所在硬盘的空间足不足,可以扩容解决这个问题;第二,什么数据库MS-SQL的话可以删除日志文件,如果是ORACEL的话看看表空间足不足,不足的话扩表空间。
你的问题太笼统了。
问题二:如何删除sql数据库的日志文件 其中database为你的库名 --压缩日志1:截断事务日志:BACKUP LOG 数据库名 WITH NO_LOG2:清空日志DUMP TRANSACTION 库名 WITH NO_LOG再:企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了3: 删除LOG1:分离数据库 企业管理器->服务器->数据库->右键->分离数据库2:删除LOG文件3:附加数据库 企业管理器->服务器->数据库->右键->附加数据库此法生成新的LOG,大小只有500多K再将此数据库设置自动收缩或用代码:下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。EXEC sp_detach_db @dbname = 'pubs'EXEC sp_attach_single_file_db @dbname = 'pubs',@physname = 'c:/Program Files/Microsoft SQL Server/MSSQL/Data/pubs.mdf'4: 如果想以后不让它增长企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小)--SQL语句的设置方式:alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)5.设置为自动收缩
问题三:怎么用SQL语句删除数据库中多个文件 REMOVE FILE 只有在文件为空时才能删除。
正常操作步骤:
以下操作在查询分析器上执行即可:
--转到要处理的数据库:
use 库名
go
--查看该库所有的文件:
select [name],[filename] from sysfiles
go
--对指定的文件进行数据移除:
dbcc shrinkfile (上面查询得到的“逻辑文件名”(定Name那列), EMPTYFILE)
go
--将一定移除了数据的指定文件删除:
ALTER DATABASE 库名 REMOVE FILE 上面查询得到的“逻辑文件名”
Go
问题四:如何删除数据库中所有数据 你租用数据库时,提供商会给你提供数据库连接IP、登陆用户和密码。你在本地sql数据库管理平台(企业管理器)中远程连接你的数据库,然后进入删除所有表或视图、存订过程等资料。光留一个空库,也没啥大碍。
还有个方法就是主动联系客服,申请删除你的数据库。
管理页面上我也没有发现删除数据库的功能。
问题五:怎么删除数据库中SQL文件。 数据库上传sql文件,不是太理解。你是不是说你导入了一份sql文件五次。而这份sql文件是执行插入命令。如果是这样,你可以通过编写存储过程加上带条件的删除语句对重复的数据进行处理。
问题六:sql数据库我把表删除了,为什么数据库文件还是那么大?请问怎么才能彻底把数据库文件弄小? create database dbName
on( ...
size=10mb,
...)
是不是建库的时候初始设置大了?
----------
数据库在使用过程中会因需要而不断扩张,你删除表或者大量数据,数据库虽然内容少了,但占用的资源不会少.需要使用数据库收缩命令.
DBCC SHRINKDATABASE(dbName)
或者右键:
企业管理器--目标数据库--所有任务--收缩数据库--收缩文件 --选择数据文件
问题七:数据库文件被人为删除,怎么办? 数据库删除后,普通的软件是无法找回的了。比如网上下载的软件,最好别尝试,尝试还是浪费时间的。我们公司之前也是由于误删除MDF,找了多家公司修复,附加都置疑,最后联系了广州拓飞,那里的工程师专业做数据库修复,我们公司的数据库后来在拓飞修复好了。“请注意,最好不要往那个分区(误删除的那个分区),如果覆盖数据会很麻烦,甚至无法修复了。”,在百度搜索广州拓飞数绩恢复“,可以找到他们的电话,地址,祝你们成功
问题八:怎么删除oracle的数据文件 一、使用offline数据文件的方法
非归档模式使用:alter database datafile '...' offline drop;
归档模式使用: alter database datafile '...' offline;
说明:
1) 以上命令只是将该数据文件OFFLINE,而不是在数据库中删除数据文件。该数据文件的信息在控制文件种仍存在。查询v$datafile,仍显示该文件。
2) 归档模式下offline和offline drop效果是一样的
3) offline后,存在此datafile上的对象将不能访问
4) noarchivelog模式下,只要online redo日志没有被重写,可以对这个文件recover后进行online操作
实际使用案例:
直接删除数据文件后无法进入系统的解决方案
正常情况下,删除表空间的正确方法为:
DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;
如果没有通过以上命令删除而直接删除了数据文件,将导致数据库无法打开。
如果直接删除了数据文件
普通用户登录时,则报错:
ORA-01033: ORACLE initialization or shutdown in progress
sys用户可以正常登录
但进行操作时(SELECT count(1) FROM user_tables),则会报错:
ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询
如果执行命令alter database open以打开数据库时,又报如下错:
ORA-01157: 无法标识/锁定数据文件 12 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 12: 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/TSTEST001.DBF'
说明数据库没找到这个数据文件
因为数据文件在没有被offline的情况下物理删除了,导致oracle的数据不一致,因此启动失败.
通过以下方法即可解决
解决方法:
sqlplus [email protected] as sysdba;
SQL> alter database datafile 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/TSTEST001.DBF' offline drop;
SQL> alter database open;
SQL> drop tablespace CTBASEDATA;
二、Oracle 10G R2开始,可以采用:Alter tablespace tablespace_name drop datafile file_name;来删除一个空数据文件,并且相应的数据字典信息也会清除:
[email protected] >select file_id,file_name,tablespace_name from dba_data_files
2 where tablespace_name='USERS';
FILE_ID FILE_NAME ......>>
问题九:怎么修改或删除mdb数据库文件里面的东西呀? mdb是access数据库的文件,你可以安装office专业版(2003以上的版本),就可以打开这些文件对其进行修改或删除,但是由于其原先是网站后台数据,可能会有密码否则是无法打开的。
如何删除文本文件中存储的数据?
【中文标题】如何删除文本文件中存储的数据?【英文标题】:How to delete stored data in a text file? 【发布时间】:2021-04-22 11:50:55 【问题描述】:感谢@RemyLebeau,下面的代码基于我原来的代码进行了修改以修复错误。 它很棒,但是出现了一个新问题,当我想使用菜单中的选项 4 删除学生数据时,在输入他们的 ID 后,它说他们的数据已被删除,但事实并非如此。在控制台的末尾,标准错误流 (cerr) 下的消息“从文件读取数据时出错” 不断出现。我所有修复它的尝试都失败了。 error_display
//Project on Student Management
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
struct Course
string courseName;
string grade;
string status;
;
class Student
int id;
int year;
float cgpa;
vector<Course> courses;
string academic_advisor;
public:
Student();
void getData();
void showData() const;
int getID() const return id;
friend ostream& operator<<(ostream &out, const Student &s);
friend istream& operator>>(istream &in, Student &s);
;
void writeStr(ostream &out, const string &str)
size_t size = str.size();
out.write((char*)&size, sizeof(size));
if (size)
out.write(str.c_str(), size);
void readStr(istream &in, string &str)
str.clear();
size_t size;
if (in.read((char*)&size, sizeof(size)))
if (size > 0)
str.resize(size);
in.read(&str[0], size);
ostream& operator<<(ostream &out, const Course &c)
writeStr(out, c.courseName);
writeStr(out, c.grade);
writeStr(out, c.status);
return out;
istream& operator>>(istream &in, Course &c)
readStr(in, c.courseName);
readStr(in, c.grade);
readStr(in, c.status);
return in;
ostream& operator<<(ostream &out, const Student &s)
out.write((char*)&s.id, sizeof(s.id));
out.write((char*)&s.year, sizeof(s.year));
out.write((char*)&s.cgpa, sizeof(s.cgpa));
writeStr(out, s.academic_advisor);
size_t NumberOfcourses = s.courses.size();
out.write((char*)&NumberOfcourses, sizeof(NumberOfcourses));
for(int i = 0; i < NumberOfcourses; ++i)
if (!(out << s.courses[i]))
break;
return out;
istream& operator>>(istream &in, Student &s)
s.courses.clear();
in.read((char*)&s.id, sizeof(s.id));
in.read((char*)&s.year, sizeof(s.year));
in.read((char*)&s.cgpa, sizeof(s.cgpa));
readStr(in, s.academic_advisor);
size_t NumberOfcourses;
if (in.read((char*)&NumberOfcourses, sizeof(NumberOfcourses)))
s.courses.reserve(NumberOfcourses);
Course c;
for(size_t i = 0; i < NumberOfcourses; ++i)
if (in >> c)
s.courses.push_back(c);
else
break;
return in;
Student::Student()
id = 0;
year = 0;
cgpa = 0.0f;
void Student::getData()
courses.clear();
cout << "\n\nEnter Student Details......\n";
cout << "Enter ID No. : "; cin >> id;
cout << "Enter Intake Year of the Student: "; cin >> year;
cout << "Enter number of Taken courses: ";
size_t NumberOfcourses;
cin >> NumberOfcourses;
cin.ignore();
courses.reserve(NumberOfcourses);
Course c;
for(int a = 0; a < NumberOfcourses; ++a)
cout << "\nEnter Subject Name: ";
getline(cin, c.courseName);
cout << "Enter Grade of Subject: ";
getline(cin, c.grade);
cout << "Enter Subject Status: ";
getline(cin, c.status);
courses.push_back(c);
cout << "Enter student CGPA: ";
cin >> cgpa;
cin.ignore();
cout << endl;
cout << "Enter Name of Academic Advisor of Student: ";
getline(cin, academic_advisor);
void Student::showData() const
cout << "\n\n.......Student Details......\n";
cout << "ID No. : " << id << endl;
cout << "Intake Year : " << year << endl;
cout << "Subjects Taken in Previous Semester : " << endl;
for(size_t t = 0; t < courses.size(); ++t)
cout << "\t" << courses[t].courseName << ": " << courses[t].grade << " (" << courses[t].status << ") ";
cout << endl;
cout << "CGPA : " << cgpa << endl;
cout << "Name of academic advisor of Student : " << academic_advisor << endl;
cout << endl;
void addData()
Student s;
s.getData();
ofstream fout("Students.txt", ios::binary|ios::app);
if (fout << s)
cout << "\n\nData Successfully Saved to File....\n";
else
cerr << "\n\nError Saving Data to File!\n";
void displayData()
ifstream fin("Students.txt", ios::binary);
Student s;
while (fin >> s)
s.showData();
if (fin)
cout << "\n\nData Reading from File Successfully Done....\n";
else
cerr << "\n\nError Reading Data from File!\n";
void searchData()
int n;
cout << "Enter ID Number you want to search for : ";
cin >> n;
ifstream fin("Students.txt", ios::binary);
Student s;
bool flag = false;
while (fin >> s)
if (n == s.getID())
cout << "The Details of ID No. " << n << " are: \n";
s.showData();
flag = true;
break;
if (fin)
if (!flag)
cout << "The ID No. " << n << " not found....\n\n";
cout << "\n\nData Reading from File Successfully Done....\n";
else
cerr << "\n\nError Reading Data from File!\n";
void deleteData()
int n;
cout << "Enter ID Number you want to delete : ";
cin >> n;
ifstream fin("Students.txt", ios::binary);
ofstream fout("TempStud.txt", ios::binary);
ofstream tout("TrashStud.txt", ios::binary|ios::app);
Student s;
bool flag = false;
while (fin >> s)
if (n == s.getID())
cout << "The Following ID No. " << n << " has been deleted:\n";
s.showData();
tout << s;
flag = true;
else
fout << s;
if (fin)
if (fout)
fin.close();
fout.close();
if (!flag)
cout << "The ID No. " << n << " not found....\n\n";
remove("tempStud.txt");
else
remove("Students.txt");
rename("tempStud.txt", "Students.txt");
cout << "\n\nData Successfully Deleted from File....\n";
else
cerr << "\n\nError Saving Data to File!\n";
else
cerr << "\n\nError Reading Data from File!\n";
void modifyData()
int n;
cout << "Enter ID Number you want to Modify : ";
cin >> n;
ifstream fin("Students.txt", ios::binary);
ofstream fout("TempStud.txt", ios::binary);
Student s;
bool flag = false;
while (fin >> s)
if (n == s.getID())
cout << "The Following ID No. " << n << " will be modified with new data:\n";
s.showData();
cout << "\n\nNow Enter the New Details....\n";
s.getData();
flag = true;
fout << s;
if (fin)
if (fout)
fin.close();
fout.close();
if (!flag)
cout << "The ID No. " << n << " not found....\n\n";
remove("TempStud.txt");
else
remove("Students.txt");
rename("TempStud.txt", "Students.txt");
cout << "\n\nData Successfully Updated in File....\n";
else
cerr << "\n\nError Saving Data to File!\n";
else
cerr << "\n\nError Reading Data from File!\n";
void project()
int ch;
do
system("cls");
cout << "...............STUDENT MANAGEMENT SYSTEM..............\n";
cout << "====================SEGI University=================\n";
cout << "0. Exit from Program\n";
cout << "1. Write Data to File\n";
cout << "2. Read Data From File\n";
cout << "3. Search Data From File\n";
cout << "4. Delete Data From File\n";
cout << "5. Modify Data in File\n";
cout << "Enter your choice : ";
cin >> ch;
system("cls");
switch (ch)
case 1: addData(); break;
case 2: displayData(); break;
case 3: searchData(); break;
case 4: deleteData(); break;
case 5: modifyData(); break;
system("pause");
while (ch != 0);
int main()
project();
【问题讨论】:
我在modifyData()
中看到至少一个关于文件名的错字。我强烈建议使用一个带有名称的全局常量而不是重复它,让编译器完成校对的艰苦工作会容易得多。此外,如果您在 Unix 上工作,文件名中的大小写可能无关紧要,但在 Windows 上却很重要。
当您使用调试器运行代码时,一次一行,您看到显示的代码在做什么?
【参考方案1】:
错误是因为 fin (在 deleteData () 函数中)运行到文件末尾,最后 fin 存储 nullptr (布尔转换为 false)这就是 else 语句运行的原因。很明显 while 循环 中断的原因。 要检查文件是否打开,您可以使用 if(fin.is_open()) 用于 fin 并类似地用于 fout,例如 if(fout.is_open())
【讨论】:
以上是关于数据库文件如何删除的主要内容,如果未能解决你的问题,请参考以下文章