4

テーブルを適切に構築できるように、sequelize-cli のセットアップと実行による移行戦略を取得しました。それは使用sequelize db:migrateして動作し、テーブルをうまく作成します。そしてsequelize db:migrate:undo、テーブルを削除します。

いくつかのレコードを挿入するためのコードも含めました ( SE のコメントはこちら)。それもうまくいきます。すべてのコードは次のとおりです。

'use strict';

module.exports = {
  up: function(queryInterface, DataTypes, done) {
    return queryInterface.createTable('survey', {
      id: {
        type: DataTypes.INTEGER,
        primaryKey: true,
        autoIncrement: true
      },
      state: {
        type: DataTypes.TEXT
      },
      age: {
        type: DataTypes.INTEGER
      },
      race: {
        type: DataTypes.TEXT
      },
      gender: {
        type: DataTypes.TEXT
      },
      education: {
        type: DataTypes.TEXT
      },
      q1: {
        type: DataTypes.INTEGER
      },
      q2: {
        type: DataTypes.INTEGER
      },
      .
      .
      .
      q24: {
        type: DataTypes.INTEGER
      },
      q25: {
        type: DataTypes.INTEGER
      }
    }).then(function() {
      queryInterface.sequelize.query("INSERT INTO survey (state, age, race, gender, q1, q7, q24) VALUES ('Texas', 42, 'white', 'female', 5, 4, 3), ('Louisiana', 19, 'hispanic', 'male', 1, 2,5)");
      done();
    });
  },

  down: function(queryInterface, Sequelize) {
    return queryInterface.dropTable('survey');
  }
};

しかし、シード データとして使用する必要がある 3000 を超えるレコードを含む CSV ファイルがあります。dbフォルダにあり、 と呼ばれますsurvey.csv。またはseedersによって自動的に作成されたと思われるフォルダーもあります。現在空です。sequelize initsequelize migration:create

Excel の concatenate 関数を使用して、データの順序付けられた n タプルを作成し、それらの 3000 行を の promise 部分に挿入して貼り付けることができupますが、それはばかげているようです。

同様の質問に対するこの返信を見つけましたが、Rails では:

CSV ライブラリが必要です。ドキュメントから:

arr_of_arrs = CSV.read("path/to/file.csv")

これにより、好きなように処理できる2D配列が得られます。CSV に似てIO.readいますが、ヘッダー解析などの追加機能がいくつかあります。

一握り (またはそれ以上) の csvノードパッケージがあるように見えますが、非常に複雑です (単純な名前のcsvのように)。

データベースへの csv のダンプを容易にするために使用できる、より単純な csv パーサー (Rails 用のパーサーなど) はありますか? または、スプレッドシートから膨大な数の余分なコードをコピーする必要のない別の方法はありますか?

4

0 に答える 0