在node-sqlite3中导入CSV文件

2024-01-15

我在我的网络应用程序中使用 npm sqlite3 包来创建一个模拟餐厅。当我的本地服务器启动时,我正在创建一个menuItems table:

var db = new sqlite3.Database(':memory:');
db.serialize(function() {
  db.run('CREATE TABLE menuItems ('
          + 'itemName VARCHAR(255),'
          + 'itemDescription VARCHAR(255),'
          + 'unitPrice REAL'
          + ');')
  .run("INSERT INTO menuItems (itemName, itemDescription, unitPrice) VALUES"
          + " ('Fish Filet', 'Yummy fish in a sandwich.', 9.95)")
});

我想menuItems表与此 js 文件分开。我能想到的选项:

  1. 使用当前的硬编码命令将单个项目插入表中。
  2. 使用SQLite3导入CSV文件并将其插入到表中。
  3. 从 CSV 文件中读取项目并将其插入循环中。
  4. 服务器启动前建立数据库并传入sqlite3.Database()构造函数。

我愿意选择选项 2。不过,我愿意接受任何建议。有一些方法可以使用 SQLite 导入 CSV 文件 http://www.sqlitetutorial.net/sqlite-import-csv/。我正在尝试执行此操作,但来自 sqlite3 npm 包。当我尝试通过链接页面中的相同命令(似乎是 sqlite3 特定的)导入文件时:

db.run('.import "C:/Users/path/to/csv/file.csv"'
      + 'INTO TABLE menuItems'
      + 'FIELDS TERMINATED BY ","'
      + 'ENCLOSED BY "\'"'
      + 'LINES TERMINATED BY \'\\n\''
      + 'IGNORE 1 ROWS'
      + ');');

我收到:

events.js:183
  throw er; // Unhandled 'error' event
  ^

Error: SQLITE_ERROR: near ".": syntax error

Trying 普通 SQL 语法 https://stackoverflow.com/questions/15242757/import-csv-file-into-sql-server:

.run('BULK INSERT menuItems'
      + 'FROM "C:/Users/path/to/csv/file.csv" '
      + 'WITH '
      + '{ '
      + 'FIRSTROW = 2,'
      + 'FIELDTERMINATOR = ","'
      + 'ROWTERMINATOR = "\n",'
      + 'ERRORFILE = "C:/Users/path/to/csv/error_file.csv" '
      + 'TABLOCK'
      + '}')

我收到:

events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: SQLITE_ERROR: near "BULK": syntax error

我的语法不正确吗?有没有更好的办法?方案3我没试过。


我最终选择了选项 3。也就是说,我使用了fs包读取 CSV 文件,进行一些解析,返回结果Promise对象,并在其中进行数据库插入then所说的Promise object.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在node-sqlite3中导入CSV文件 的相关文章

随机推荐

  • 带皮肤的 BottomSheetDialogFragment 主题

    如何结合BottomSheetDialogFragment主题与其他主题 我的应用程序具有使用主题制作的皮肤 BottomSheetDialogFragment应该有圆角 我使用以下方法实现这一点 override fun onCreate
  • 为 iPhone 创建组合框 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 由于没有预先存在的用于创建组合框 或选择框 的组件 如通过 Safari 在网页上看到的那样 有人可以
  • 如何将kinect的深度图像与彩色图像对齐

    Kinect 上的颜色和深度传感器生成的图像略有不对齐 我怎样才能改变它们以使它们对齐 关键是调用 Runtime NuiCamera GetColorPixelCoordinatesFromDepthPixel 这是 Runtime 类的
  • 4-5-4 国家零售基金会日历 csv 下载或创建函数

    我一直在谷歌上到处搜索 但没有找到这个 我工作的零售客户使用 NRFretail 日历 NRF site http nrf com 我想知道是否有人曾经使用这些值创建过查找 维度表 Thanks 您可以找到一个 perl 模块 可以在 CP
  • 如何在 iOS 中裁剪视频

    我正在查看 Apple 提供的 RosyWriter 示例代码作为起点 我想找到一种裁剪视频的方法 所以我有 iPhone 相机的全分辨率视频 但我只想使用其中的裁剪部分 并旋转该子部分 我认为在captureOutput didOutpu
  • 如何在wxPython中制作类似日志框的东西

    我假设这可以通过多行文本框实现 但不确定如何做到这一点 我想做的是在我的 wxPython 程序中创建一个日志框 当某些操作发生时我可以在其中写入消息 另外 我不仅需要在事件发生时写入消息 还需要在代码中的某些时间写入消息 我如何才能重绘窗
  • Castle Windsor:当我的程序集无法访问基础类型时,如何注册工厂方法?

    我有一个项目 其中我的业务层是使用 DI 构建的 但我正在尝试采取额外的步骤并使用 Windsor 来管理对象构建 假设我有一个预先存在的数据层 我不想修改 可以通过以下接口访问 interface IDataFactory IDataSe
  • jQuery 在网站/内容加载后淡入淡出?

    是否有任何教程或插件可以在网站正确加载后淡入视图 以限制任何不和谐等 使内容基本上顺利显示 我想如果它只是一个特定区域会更容易 因为页眉或页脚已经被缓存 从以前的页面 例如 带有各种缩略图的作品集页面 它们只有在准备好后才会顺利显示 这可以
  • 如何告诉 Django,memcached 运行时的项目大小大于默认值?

    我使用新设置来增加 memcached 中的项目大小 但我无法通过 Django 后端存储大于 1mb 的内容 我知道memcache模块需要一些设置来实现这一点 Django 在后端使用这个模块 From memcache py 可以保存
  • Android 如何传递 Activity.class 作为函数的参数

    我最近从 Python 迁移到 Android 但被困在这里 这是我的类声明 用于为接受必要参数的警报对话框创建一个通用函数 public static AlertDialog Builder getAlertDialog String s
  • 我可以在 MVC 3 中拥有/链接 1 个以上的 _Layout 页面吗?对于 cshtml 页面?

    我有一个布局页面和一些使用它的页面 但我想在一些使用它的子页面上实现导航控件 所以我想使用另一个嵌套布局页面 这可能吗 是的 效果很好 只需告诉您的布局页面使用另一个布局页面 Layout pathToMyOtherLayout 您还可以使
  • Android - 调用默认浏览器并重定向到指定的网址

    Hi我想编写一个应用程序来调用默认浏览器并重定向到指定的网址 任何建议 1 调用默认浏览器 2 重定向到指定的 url Thanks 您只想使用网页的 Uri 作为数据元素来启动 ACTION VIEW 意图 Intent httpInte
  • this._mouseInit() 不是一个函数

    我刚刚将代码更新到 jqueryui 1 8 它给了我这个错误 this mouseInit is not a function 我该如何解决这个问题 我有一个可以让鼠标开始拖动和停止的小部件 这是我的代码 widget ui boxToo
  • header('P3P: CP="CAO PSA OUR"'); 是什么意思?做?

    What is header P3P CP CAO PSA OUR for 如何 为什么让这个脚本在 IE 中正常工作 session start if session is registered pre myusername header
  • javascript中相对路径和绝对路径的区别

    有一些小的澄清 据我所知 这些是相对路径和绝对路径 Completely relative img src kitten png Absolute in all respects img src http www foo com image
  • 位置为绝对的元素上的垂直空间

    我如何制作元素position absolute and 动态高度仅使用 css 占据垂直空间 我可以使用容器和显示方面的技巧吗 不幸的是 根据定义 使用绝对定位意味着您的元素不再占用空间 所以不行 只能通过css没有办法做到这一点 您当然
  • 如何检查多值参数中是否选择了某个值

    在 SSRS 2008 中 我使用多值参数为特定参数选择多个值 在我的报告中 我有条件格式 如果选择了该项目 则特定标签必须为蓝色 否则它会保持黑色 我的直觉是尝试使用 SQL 方式 但我错了 Switch Fields groupType
  • 在 C++ 中返回错误代码的正确方法是什么

    我正在使用错误代码来处理我的 C 项目中的错误 问题是如何从应该返回某些变量 对象的函数返回错误代码 考虑一下 long val myobject doSomething 这里 myobject 是某个类的对象 如果 doSomething
  • 以编程方式实现一个接口,该接口以各种指定的方式组合同一接口的一些实例

    实现以各种指定方式组合同一接口的一些实例的接口的最佳方法是什么 我需要对多个接口执行此操作 并且希望最大限度地减少样板文件并仍然实现良好的效率 因为我需要为关键的生产系统执行此操作 这是问题的草图 抽象地说 我有一个通用的组合器类 它接受实
  • 在node-sqlite3中导入CSV文件

    我在我的网络应用程序中使用 npm sqlite3 包来创建一个模拟餐厅 当我的本地服务器启动时 我正在创建一个menuItems table var db new sqlite3 Database memory db serialize