首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用列名的SQLite导出

使用列名的SQLite导出
EN

Stack Overflow用户
提问于 2010-11-17 06:48:06
回答 11查看 7.5K关注 0票数 25

是否有任何SQLite命令或第三方工具允许数据库转储在INSERT INTO语句中包含列名?

而不是

代码语言:javascript
复制
INSERT INTO "MyTable" VALUES ('A', 'B');

我想看看

代码语言:javascript
复制
INSERT INTO "MyTable" (Column1, Column2) VALUES ('A', 'B');

SQLite中的.dump命令仅提供第一个版本。

EN

回答 11

Stack Overflow用户

发布于 2011-01-26 12:59:35

让我再试一次。

将列名和INSERT语句转储到文件中。

代码语言:javascript
复制
sqlite> .output test.data
sqlite> pragma table_info(test);
sqlite> .dump test
sqlite> .quit

$ cat test.data
0|test_id|int|0||1
1|test_name|varchar(35)|0||0
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE test (test_id int primary key, test_name varchar(35));
INSERT INTO "test" VALUES(1,'Wibble');
INSERT INTO "test" VALUES(2,'Wobble');
INSERT INTO "test" VALUES(3,'Pernicious');
COMMIT;

现在运行这个awk脚本

代码语言:javascript
复制
/\|/ {
  split($0, col_name, "|");
  column_names[++n] = col_name[2];
}
/INSERT INTO \"[A-Za-z].*\"/ {
  insert_part = match($0, /INSERT INTO \"[A-Za-z].*\"/);
  printf("%s ", substr($0, RSTART, RLENGTH));

  printf("(");
  for (i = 1; i <= n; i++) {
    if (i == 1) {
      printf("%s", column_names[i]);
    }
    else {
      printf(", %s", column_names[i]);
    }
  }
  printf(") ");

  values_part = substr($0, RLENGTH+1, length($0) - RSTART);
  printf("%s\n", values_part);


}

我们就会得到

代码语言:javascript
复制
$ awk -f dump_with_col_names.awk test.data
INSERT INTO "test" (test_id, test_name)  VALUES(1,'Wibble');
INSERT INTO "test" (test_id, test_name)  VALUES(2,'Wobble');
INSERT INTO "test" (test_id, test_name)  VALUES(3,'Pernicious');
票数 7
EN

Stack Overflow用户

发布于 2017-05-24 19:38:07

这并没有回答这个问题。我之所以在这里写这篇文章,是因为这是我解决类似问题的方法。一种方法是分别转储结构和数据。对于像您在数据文件外部描述的插入:

代码语言:javascript
复制
sqlite> .headers on
sqlite> .mode insert MyTable
sqlite> .output MyTable_data.sql
sqlite> select * from MyTable;
sqlite> .quit
票数 6
EN

Stack Overflow用户

发布于 2017-07-27 22:47:33

有一个SQLite扩展模块,用于从/向SQL源文本导入/导出数据库信息,以及导出到CSV文本。http://www.ch-werner.de/sqliteodbc/html/impexp_8c.html

例如,在Ubuntu中,您的步骤是:

ubuntu存储库中的

  1. 安装模块

sudo apt在sqlite命令行提示符下安装libsqlite3-mod-impexp

  • Load模块

将libsqlite3_mod_impexp

  • Export数据库转换为dump.sql文件

select export_sql('dump.sql',‘1’);我的数据库的

  • 结果示例如下

插入或替换到"camera“("name","reviews")值(‘BenQ GH700',NULL);INSERT OR REPLACE到"camera”("name","reviews")值(’佳能EOS 40D',NULL);

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4199850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档