【问题标题】:Importing .csv file to sqlite3 db table将 .csv 文件导入到 sqlite3 db 表
【发布时间】:2015-02-06 22:06:49
【问题描述】:

我编写了一个单行 shell 脚本来将一个 .csv 文件导入到 sqlite3 数据库表中。

echo -e '.separator "," \n.import testing.csv aj_test' | sqlite3 ajtest.db

sqlite3 数据库 = ajtest.db ajtest.db 中的 sqlite3 表 = new_test

testing.csv 有 3 列,第一列是 int,其余两列是文本;所以相应的 new_test 的结构也是--

sqlite> .schema aj_test
CREATE TABLE aj_test(number integer not null,
first_name varchar(20) not null,
last_name varchar(20) not null);

当脚本运行时,它不会显示任何错误,但它也不会导入任何数据。关于我错过了什么的任何指导方针???

【问题讨论】:

  • 查看linkCSV Import
  • 谢谢,但我提到该链接仅用于规划脚本。在目前的情况下没有太大帮助。
  • 导入前是否已创建表?可以显示 testing.csv 的内容吗?
  • 是的,我在导入数据之前创建了表。我附上了 testing.csv 的截图供您参考。
  • 我认为命令应该是echo -e '.separator "," \n.import testing.csv aj_test' | sqlite3 ajtest.db,因为您要导入的表是aj_test。

标签: shell sqlite export-to-csv


【解决方案1】:

这对我的需求最有效,因为它很简单(与 echo 解决方案不同)并且不会让 sqlite shell 打开。

#!/bin/bash 

sqlite3 -separator ',' stuff.db ".import myfile.csv t_table_name"

【讨论】:

  • 这应该是公认的答案。比echo 解决方案更干净。
【解决方案2】:

为什么不利用 Sqlite 的内置命令行选项将 CVS 文件加载到 Sqlite 数据库表中呢?我假设您正在编写 bash shell 脚本来将 CSV 文件数据加载到 SQLite 表中。

看看下面的单行 bash 脚本:

#!/bin/bash

sqlite3  -separator "," -cmd ".import /path/to/test.csv aj_test" ajtest.db

以我有限的知识,我不能给你任何例子来在数据库上加载完成后自动注销sqlite cli!

【讨论】:

  • 我喜欢这个选项,但它让我留在了 sqlite shell 中。
  • 感谢您的贡献...它让我尝试了这个(有效): sqlite3 -separator ',' stuff.db ".import myfile.csv t_table_name"
【解决方案3】:

我发现这行得通:

(echo .separator ,; echo .import path/to/file.csv table_name) | sqlite3 filename.db

接受的答案对我不起作用。

【讨论】:

  • 我一定会尝试使用您的解决方案并进行更新。谢谢。
  • (echo .mode csv; echo .import path/to/file.csv table_name) | sqlite3 文件名.db
【解决方案4】:

经过大量研究和讨论,我找到了一个可以正常工作的答案,

echo -e ".separator ","\n.import /home/aj/ora_exported.csv qt_exported2" | sqlite3 testdatabase.db

主要的是,我需要在导入语句中包含 .csv 文件的路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 2011-02-22
    • 2021-09-17
    相关资源
    最近更新 更多